/ / Налаштування NHibernate кешування другого рівня у додатку MVC - asp.net-mvc, nhibernate, кешування

Налаштування NHibernate кешування другого рівня в додатку MVC - asp.net-mvc, nhibernate, кешування

У мене є додаток MVC3, який використовує NHibernate. Все йшло добре, поки я почав спробувати додати кешування другого рівня. Проглянувши Інтернет протягом декількох годин, я нарешті знайшов те, що, на мою думку, правильний dll (NHibernate.Caches.SysCache2.dll) і додав його до мого проекту.

Проте я не можу знайти будь-яку допомогу для його налаштуванняз додатком MVC. Всі приклади стосуються наявності файлу App.config (я вважаю, що це для веб-форм). Я розробник Java, який вивчає .Net, тому я не дуже знайомий з тим, як підготувати все.

Чи може хтось вказати мені в правильному напрямку? Я використовую файли xml hibernate (hbm).

Дякую.

Відповіді:

9 для відповіді № 1

Я використовую 2-го рівня кешування з MVC3 і NHibernate.Caches.SysCache.dll, як це ...

1-е, додати розділ конфігурації до вашого файлу web.config, як це

<configSections>
<section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=6876f2ea66c9f443"/>
</configSections>

додайте розділ "Системний аналіз" до свого веб-конфігурації у розділі налаштування, як це:

<syscache>
<cache region="SomeCustomNameRegion" expiration="86400" priority="5" />
</syscache>

у файлі hibernate.cfg.xml у мене є такі властивості:

<property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>
<property name="cache.use_query_cache">true</property>
<property name="cache.use_second_level_cache">true</property>

Я використовую FluentNhibernate для створення моїх відображення та додати це для підтримки кешування:

public CustomerClassMap()
{
Cache.NonStrictReadWrite();
Id(x => x.Id);
Map(x => x.Name);
//... more properties
}

А потім, у своєму коді доступу до даних, у мене є щось схоже на це для запитів, які я хочу зберегти в кеш:

public IEnumerable<Customer> GetAllCached()
{
return Session.CreateCriteria(typeof(Customer))
.SetCacheable(true)
.SetCacheRegion("SomeCustomNameRegion")
.SetCacheMode(CacheMode.Normal)
.AddOrder(Order.Desc("CreateDate"))
.List<Customer>();
}

Ось деякі корисні посилання, щоб отримати трохидокладніше. Існує нічого конкретного про MVC3, що вам потрібно турбуватися, і більшість із попередніх версій NHibernate більшою мірою, наскільки я можу сказати.

http://www.klopfenstein.net/lorenz.aspx/using-syscache-as-secondary-cache-in-nhibernate

http://blog.symbiotic-development.com/2008/02/27/more-configuring-nhibernate-caches/