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() следует использовать только в исключительных случаях.