以下代码段的作用是什么?为什么要使用Evict
?
private void DoEvict(customer cust)
{
AddressRepository.Evict(cust.Address);
cust.Address = AddressRepository.Get(cust.Address.Id);
}
答案 0 :(得分:22)
evict从NHibernate第一级缓存中删除了特定的“Address”引用。
如果代码片段中的第一条指令未执行,则第二条指令不是从数据库中提取项目,而只是从第一级缓存中返回。
答案 1 :(得分:1)
Session.evict()用于将特定对象从持久状态移除到分离状态。