我对二级缓存感到有点奇怪。
我正在使用以下通用方法删除对象:
[Transaction(TransactionMode.Requires)]
public virtual void DeleteObject(object obj)
{
ISession session = _sessionManager.OpenSession();
session.Delete(obj);
}
我正在记录缓存操作,我可以看到对象被无效并被删除:
无效: ncontinuity2.core.domain.AuditEvent.ReviewList#67d175fe-1220-4dff-9c6b-9fe200a1fc89
释放: ncontinuity2.core.domain.AuditEvent#67d175fe-1220-4dff-9c6b-9fe200a1fc89
然后我尝试使用此通用代码获取包含已删除实体的类型的集合:
public virtual IList<T> GetAllByExpression<T>(Expression<Func<T, bool>> expression) where T : class
{
var session = _sessionManager.OpenSession();
var result = session.QueryOver<T>()
.Where(expression)
.List();
return result;
}
先前删除的实体位于结果集中。如果我检查缓存日志,我有以下条目:
缓存查找: ncontinuity2.core.domain.AuditEvent#67d175fe-1220-4dff-9c6b-9fe200a1fc89
缓存商品已被锁定: ncontinuity2.core.domain.AuditEvent#67d175fe-1220-4dff-9c6b-9fe200a1fc89
有谁知道为什么我可能会收到“缓存项目被锁定”的条目?
我正在使用Nhibernate 3.0.0.3001。