Краткий ответ: нет.Вы должны инициализировать все, что вам нужно после закрытия сеанса, прежде чем закрывать сеанс.Метод принудительной загрузки ленивого прокси (без его перечисления): NHibernateUtil.Initialize(USER.ROLES)
.
Длинный ответ ... вроде.Возможно «присоединить» объекты к новому сеансу, что позволяет инициализировать PersistentBags и другие прокси-серверы NH.Лучший способ использовать, учитывая, что вы знаете, что объект существует в БД, но не в вашем новом сеансе, и что вы еще не изменили его, это Session.Lock(USER, LockMode.None)
.Это будет связывать объект с новым сеансом, не сообщая NHibernate делать что-либо в отношении операций чтения или записи объекта.Если вы регулярно присоединяете объекты к новым сеансам, это признак того, что вы не оставляете сеансы открытыми достаточно долго.Например, нет проблем с открытием одного сеанса для каждой формы окна и сохранением его открытым до тех пор, пока форма открыта. ПРЕДОСТАВЛЯЕТСЯ закрыть его при закрытии окна.