3
当这被调用两次时,第二次调用不会重新运行数据库上的查询,查询缓存将起作用。NHibernate查询缓存在使用连接时不起作用
var query = from p in session.Query<Product>()
where p.YearIntroduced >= 0
select p;
query = query.Cacheable();
var t = query.ToList();
然而,当我把查询一些加盟,查询缓存不工作了,因此,当这个被调用两次,查询数据库调用两次过:
var query = from p in session.Query<Product>()
join l in session.Query<ProductLanguage>()
on p.ProductId equals l.ProductId
where p.YearIntroduced >= 0
select new { p, l };
query = query.Cacheable();
var t = query.ToList();
可能是一个愚蠢的问题,查询缓存是否只能在一个表上工作,因此当添加连接时,查询不再可缓存?
即使它有连接,查询缓存的解决方案是什么?
另一个奇怪的是,使用连接进行查询缓存将工作,如果我删除where子句。当这个被调用两次,第二次调用不重新运行数据库的查询,查询缓存的工作
var query = from p in session.Query<Product>()
join l in session.Query<ProductLanguage>()
on p.ProductId equals l.ProductId
select new { p, l };
query = query.Cacheable();
var t = query.ToList();
但是有什么用一个查询时,你不能把where子句就可以了?
这是一个NHibernate的错误,或者我只是使用查询缓存错误的方式?