NHibernate / несколько сессий и вложенных объектов - PullRequest
1 голос
/ 26 апреля 2010

Мы используем NHibernate в многофункциональном клиентском приложении. Это довольно открытое приложение (пользователь ищет набор данных или создает новый, изменяет данные и сохраняет набор данных. Мы оставляем сессию открытой, потому что иногда нам приходится лениво загружать некоторые свойства объекта (структура вложенного объекта).

Это означает одну большую проблему

  • если мы оставляем сессию открытой, db (MySQL) закрывает соединение, и мы не можем это выяснить, и оно вызывает исключение (ошибка связи с сокетом) при доступе к базе данных (мы думаем о тестировании соединения db перед доступом к объекту - но это не совсем оптимально, другой вариант - установить время ожидания соединения с БД, но это, похоже, не очень хорошо).

Итак, возможно ли повторно подключить сеанс к новому соединению с базой данных?

Другая проблема

  • возможно ли получить объект из одного сеанса, а затем повторно присоединить его к другому сеансу? (Я часто слышу, что session.lock должен работать для этого - но это не так хорошо работает в нашем приложении - поэтому я закончил тем, что получил «свежий» объект из сеанса и скопировал данные вручную - что немного громоздкий)

Есть идеи для этого?

1 Ответ

0 голосов
/ 04 мая 2010

Итак, теперь я начал менять дизайн нашего приложения - на данный момент похоже, что оно стоило изменить.

Нашей главной проблемой было то, что мы использовали очень долго выполняющиеся транзакции - поэтому я изменил это на более разумный подход (использующий очень недолговечные транзакции), и пока он отлично работает.

Больше никаких проблем с закрытыми соединениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...