NHibernate уведомляет другие сессии об изменениях - PullRequest
0 голосов
/ 17 августа 2010

Мое приложение состоит из двух представлений, списка и деталей.

Каждый экземпляр представления имеет свой собственный сеанс NHibernate.

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

Чтобы сеанс представления списка получил свежую версию модифицированной сущности, я вызываю метод Session.Clear (), и он работает нормально, но затем я начинаю получать:

Initializing[Core.Domain.Order#0001730]-failed to lazily initialize a collection of role: Core.Domain.Cable.OrderItems, no session or session was closed

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

Спасибо

Ответы [ 2 ]

1 голос
/ 20 августа 2010
Session.Refresh(object);

вам может потребоваться позвонить

Session.Evict(object);

, а затем

Session.Refresh(object); 

в некоторых ситуациях "многие к одному".

0 голосов
/ 17 августа 2010

Не используйте длительные сеансы. Они не предназначены для синхронизации (поэтому вы используете базу данных?). Session.Clear () следует использовать только в исключительных случаях.

...