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