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; }
Ответ 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();
Ответ 3 Версия NH3 RC: public IQueryable<T> Queryable<T>() { IQueryable<T> queryable = SessionFactory.OpenSession().Queryable<T>(); queryable = queryable.Cacheable<T>(); return queryable; }