fluent nhibernate一级缓存未按预期工作
我有一个函数,在一个会话中被多次调用。根据我对NHibernate一级缓存的理解,同一会话中的精确查询将只执行一次,而与调用次数无关 但事实并非如此。下面是代码片段,我可以看到在NHProfiler中执行查询的次数与调用函数的次数相同fluent nhibernate一级缓存未按预期工作,nhibernate,fluent-nhibernate,linq-to-nhibernate,nhibernate-caches,Nhibernate,Fluent Nhibernate,Linq To Nhibernate,Nhibernate Caches,我有一个函数,在一个会话中被多次调用。根据我对NHibernate一级缓存的理解,同一会话中的精确查询将只执行一次,而与调用次数无关 但事实并非如此。下面是代码片段,我可以看到在NHProfiler中执行查询的次数与调用函数的次数相同 public List<CustomerType> GetAllActiveCustomerTypes() { return _unitOfWork.CurrentSession.QueryOver<Custome
public List<CustomerType> GetAllActiveCustomerTypes()
{
return _unitOfWork.CurrentSession.QueryOver<CustomerType>().Where(x => x.Active).List();
}
public List getAllActivieCustomerTypes()
{
返回_unitOfWork.CurrentSession.QueryOver().Where(x=>x.Active).List();
}
我是不是在理解NHibernate的过程中遗漏了什么
谢谢你的经验是正确的。会话一级缓存不会缓存查询。要扩展理解,请阅读以下内容: 一级缓存的提取: …第一级缓存也称为身份映射,不使用 只有减少往返数据库的次数才能提高效率 一个应用程序的速度还要保证没有 存在具有相同id的对象的两个不同实例 及 …使用NHibernate时,一级缓存将自动 只要使用标准会话对象,就会启用。。。什么时候 NHibernate正在通过其唯一id从数据库加载实体 然后它会自动放入所谓的身份映射 如上所述,它用于
实体
缓存目的
第二级缓存提取:
- 。。。可以在二级缓存中缓存单个实体或整个聚合李>
- 。。。还可以在二级缓存中缓存(复杂和/或耗时)查询