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