NHibernate уведомляет другие сессии об изменениях

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

Каждый экземпляр view имеет свой собственный сеанс 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 ответа

Решение
Session.Refresh(object);

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

Session.Evict(object);

затем

Session.Refresh(object); 

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

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

Другие вопросы по тегам