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