NHibernate второго уровня с помощью NHibernate Linq Provider 1.0

Как включить кэш второго уровня NHibernate с провайдером Linq Linibernate 1.0?

Кэш второго уровня, похоже, работает только с использованием ICriteria.

Ответы

Ответ 1

Да, я, наконец, отработал:

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();

Ответ 2

Для NHibernate 3+ это session.Query<T>().Cacheable()

Ответ 3

Версия NH3 RC:

public IQueryable<T> Queryable<T>()
{
    IQueryable<T> queryable = SessionFactory.OpenSession().Queryable<T>();
    queryable = queryable.Cacheable<T>();

    return queryable;
}