2011-05-20 15 views
17

¿Qué hace el siguiente fragmento de código? ¿Por qué el uso de Evict?¿Qué hace NHibernate Session.Evict?

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

Respuesta

17

El desalojo elimina esa referencia de "Dirección" específica de la memoria de primer nivel NHibernate.

Si la primera instrucción en su fragmento de código no se ejecutó, la segunda, en lugar de recuperar el elemento de la base de datos, simplemente lo devolverá desde la memoria caché de primer nivel.

0

Session.evict() se utiliza para eliminar un objeto en particular del estado Persistente al estado Independiente.