NHibernate Session.Evict()

У меня нет доступа к коду здесь передо мной, поэтому мне просто интересно, может ли кто-нибудь помочь мне с Session.Evict().

Скажем, у меня есть объект Person с дочерней коллекцией адресов. Я заполняю объект Person из сеанса и лениво загружаю коллекцию адресов. Затем я вызываю Session.Evict(personObject), чтобы отсоединить объект Person от сеанса. У меня такой вопрос: если я попытаюсь получить доступ к коллекции адресов, она просто вернет значение NULL или получит исключение, потому что прокси NHibernate не может найти связанный сеанс?

3 ответа

Решение

Если вы заставите ленивую загрузку произойти до того, как вы выселите сущность, то коллекция будет доступна даже после выселения. Однако, если вы удалите сущность, а затем попытаетесь лениво загрузить дочернюю коллекцию, вы получите исключение.

Вы получите исключение NHibernate.LazyInitializationException.

У меня также нет кода передо мной, но по памяти вы, вероятно, получите исключение.

Если у вас ленивая загрузка и работа, NHibernate попытается загрузить коллекцию адресов. Он никогда не должен возвращать неправильное значение / коллекцию, он будет жаловаться только тогда, когда не может загрузить то, что было задано.

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