使用NHibernate Linq Provider 1.0的NHibernate二级缓存

如何使用NHibernate Linq Provider 1.0启用NHibernate二级缓存?

二级缓存似乎仅适用于ICriteria使用。

是的,我终于解决了这个问题:

public IQuerable CreateLinqQuery() { var query = session.Linq(); query.QueryOptions.SetCachable(true); return query; } 

更新正如其他人所指出的,在NH3中,使用query.Cacheable()。 但是要非常小心这样做:

 // Correct way: query = query.Cacheable(); // This won't work: query.Cacheable(); 

对于NHibernate 3+,它是session.Query().Cacheable()

NH3 RC版本:

 public IQueryable Queryable() { IQueryable queryable = SessionFactory.OpenSession().Queryable(); queryable = queryable.Cacheable(); return queryable; }