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