nhibernate L2 кеширование: настроить по коду
Как настроить кэш второго уровня в коде (не через xml)
текущие настройки у меня есть:
public NHCachingSetup(Configuration cfg)
{
// use first level cache
cfg.Cache(x =>
{
x.UseQueryCache = true;
x.Provider<SysCacheProvider>();
});
// set 60 min expiration time
cfg.SessionFactory().Caching
.WithDefaultExpiration(60);
}
2 ответа
Решение
То, как я сделал это с NH 3.3, похоже
var configure = new Configuration();
...
configure.Cache(x => x.UseQueryCache = true)
...
configure.SessionFactory().Caching
.Through<SysCacheProvider>().WithDefaultExpiration(1440);//secs!
Отредактируйте в вашем отображении вам понадобится:-
Cache(x => x.Usage(CacheUsage.ReadOnly));
конец редактирования
Затем для использования вы можете сделать что-то вроде (это кэширует таблицу поиска для меня):-
Db.Query<SpamAssassin>().Cacheable().CacheMode(CacheMode.Normal).ToList();
Понял:
cfg.SetProperty(Environment.BatchSize, "100")
.SetProperty(Environment.UseQueryCache, "true")
.SetProperty(Environment.UseSecondLevelCache, "true")
.Cache(x => { x.Provider<SysCacheProvider>(); });