Что делает следующий фрагмент кода?Почему использование Evict?
Evict
private void DoEvict(customer cust) { AddressRepository.Evict(cust.Address); cust.Address = AddressRepository.Get(cust.Address.Id); }
Evict удаляет эту конкретную ссылку "Адрес" из кэша первого уровня NHibernate.
Если первая инструкция в вашем фрагменте кода не была выполнена, вторая, вместо извлечения элемента из БД, просто вернет его из кэша первого уровня.
Session.evict () используется для удаления определенного объекта из постоянного состояния в отключенное состояние.