DaSmart
DaSmart

Reputation: 235

What does NHibernate Session.Evict do?

What does the following code snippet do? Why the use of Evict?

private void DoEvict(customer cust)
{
    AddressRepository.Evict(cust.Address);
    cust.Address = AddressRepository.Get(cust.Address.Id);
}

Upvotes: 22

Views: 19096

Answers (2)

arvind nayak
arvind nayak

Reputation: 21

Session.evict() is used to remove a particular object from Persistent state to Detached state.

Upvotes: 2

psousa
psousa

Reputation: 6726

The evict removes that specific "Address" reference from the NHibernate first level cache.

If the first instruction in your code snippet was not executed, the second one, instead of fetching the item from the DB, would simply return it from the first level cache.

Upvotes: 25

Related Questions