如何使用NHibernate Linq Provider 1.0启用NHibernate二级缓存?
二级缓存似乎只适用于ICriteria。
答案 0 :(得分:24)
是的,我终于解决了这个问题:
public IQuerable<T> CreateLinqQuery()
{
var query = session.Linq<T>();
query.QueryOptions.SetCachable(true);
return query;
}
<强>更新强> 正如其他人所指出的,在NH3中,使用query.Cacheable()。 但是要非常小心这样做:
// Correct way:
query = query.Cacheable();
// This won't work:
query.Cacheable();
答案 1 :(得分:21)
对于NHibernate 3+,它是session.Query<T>().Cacheable()
答案 2 :(得分:3)
NH3 RC版:
public IQueryable<T> Queryable<T>()
{
IQueryable<T> queryable = SessionFactory.OpenSession().Queryable<T>();
queryable = queryable.Cacheable<T>();
return queryable;
}