Я использую NH 2.1.2.4.
У меня есть настройка кэша запросов с Fluent NHibernate, например:
MsSqlConfiguration.MsSql2005
.Cache(c => c.UseQueryCache()
.ProviderClass(typeof(NHibernate.Caches.SysCache2.SysCacheProvider)))
Мои критерии выглядят так:
Session.CreateCriteria<Employee>()
.Add(Restrictions.Eq("Username", username))
.SetMaxResults(1)
.SetCacheable(true)
.UniqueResult<Employee>();
Однако, когда я использую SQL Profiler, я вижу, что запрос по-прежнему всегда выполняется к базе данных. Никаких вставок или обновлений в таблицу Employee не производится.
Почему это не работает?
Мой класс отображения Employee указывает Employee как кэшируемый следующим образом:
public sealed class EmployeeDbMap : ClassMap<Employee>
{
public EmployeeDbMap()
{
....
Cache.ReadWrite();
}
}
Кстати, я вижу, что по Stackoverflow есть ряд связанных вопросов, но ни на один из них нет хороших ответов: здесь и здесь .