2013-03-19 3 views
3

как настроить кэш второго уровня в коде (не через XML)NHibernate кэширования L2: Настройка с помощью кода

текущих настроек я являюсь:

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

ответ

3

То, как я сделал это с 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(); 
+0

но там в нет конфигурации кэша L2 ... im не удалось включить кеш второго уровня в первую очередь ... – 2013-03-19 19:23:16

+0

Извините, я не понимаю ваш комментарий. Вы включаете его из кода, который я предоставил. – Rippo

+0

.SetProperty (Environment.UseSecondLevelCache, «true»), чего не хватает – 2013-03-20 05:26:15

0

получил его:

cfg.SetProperty(Environment.BatchSize, "100") 
       .SetProperty(Environment.UseQueryCache, "true") 
       .SetProperty(Environment.UseSecondLevelCache, "true") 
       .Cache(x => { x.Provider<SysCacheProvider>(); }); 
+0

Какую версию nh вы используете? – Rippo

+0

@rippo nh версия 3.3.3 .. последняя – 2013-03-20 17:40:18

Смежные вопросы