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

时间:2009-09-03 18:51:32

标签: c# linq nhibernate

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

二级缓存似乎只适用于ICriteria。

3 个答案:

答案 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;
}