/ / Konfigurácia ukladania vyrovnávacej pamäte do druhého stupňa v aplikácii MVC - asp.net-mvc, nhibernate, cache

Konfigurácia vyrovnávacej pamäte NHibernate druhej úrovne v aplikácii MVC - asp.net-mvc, nhibernate, caching

Mám aplikáciu MVC3, ktorá používa NHibernate. Všetko šlo dobre, kým som sa nezačal snažiť pridať medzipamäť druhej úrovne. Po prehliadaní webu niekoľko hodín som konečne našiel to, čo si myslím, že je to správne dll (NHibernate.Caches.SysCache2.dll) a pridal som ho do svojho projektu.

Nemôžem však nájsť žiadnu pomoc pri jeho konfiguráciis aplikáciou MVC. Všetky príklady sa týkajú súboru App.config (predpokladám, že ide o webové formuláre). Som vývojár Java, ktorý sa učí. Net, takže nie som oboznámený s tým, ako všetko vybaviť.

Mohol by ma niekto nasmerovať správnym smerom. Používam súbory xml hibernácie (hbm).

Vďaka.

odpovede:

9 pre odpoveď č. 1

Používam medzipamäť 2. úrovne s MVC3 a NHibernate.Caches.SysCache.dll ako je táto ...

Po prvé, do súboru web.config pridajte konfiguračnú sekciu, ako je táto

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

pridajte sekciu syscache do svojho web.config v sekcii konfigurácie takto:

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

V mojom súbore hibernate.cfg.xml mám pridané nasledujúce vlastnosti:

<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>

Na vytváranie mojich mapovaní používam technológiu FluentNhibernate a pridávam ju na podporu ukladania do vyrovnávacej pamäte:

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

A potom v mojom prístupovom kóde k dátam mám niečo podobné tomuto pre otázky, ktoré chcem uložiť do vyrovnávacej pamäte:

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

Tu je niekoľko užitočných odkazovviac detailov. Nie je nič konkrétne o MVC3, ktoré si musíte robiť starosti, a väčšina sa nezmenila od predchádzajúcich verzií NHibernate, pokiaľ viem.

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/