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的錯誤,或者我只是使用查詢緩存錯誤的方式?