Nhibernate二级缓存“缓存项目被锁定”

时间:2012-01-24 15:12:41

标签: nhibernate

我对二级缓存感到有点奇怪。

我正在使用以下通用方法删除对象:

[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。

0 个答案:

没有答案