J'utilise la mise en cache de niveau 2 avec MVC3 et NHibernate.Caches.SysCache.dll comme ça ...
1er, ajoutez une section de configuration à votre fichier web.config comme celui-ci
<configSections>
<section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=6876f2ea66c9f443"/>
</configSections>
ajouter une section syscache à votre web.config sous votre section de configuration comme ceci:
<syscache>
<cache region="SomeCustomNameRegion" expiration="86400" priority="5" />
</syscache>
dans mon dossier hibernate.cfg.xml i les propriétés suivantes ajouté:
<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>
J'utilise FluentNhibernate pour créer mes applications et ajouter à soutenir la mise en cache:
public CustomerClassMap()
{
Cache.NonStrictReadWrite();
Id(x => x.Id);
Map(x => x.Name);
//... more properties
}
Et puis dans mon code d'accès aux données, j'ai quelque chose de similaire à ce pour les requêtes que je veux en cache :
public IEnumerable<Customer> GetAllCached()
{
return Session.CreateCriteria(typeof(Customer))
.SetCacheable(true)
.SetCacheRegion("SomeCustomNameRegion")
.SetCacheMode(CacheMode.Normal)
.AddOrder(Order.Desc("CreateDate"))
.List<Customer>();
}
Voici quelques liens utiles pour entrer dans un peu plus de détails. Il n'y a rien de spécifique à propos de MVC3 dont vous ayez à vous inquiéter, et la plupart des versions antérieures de NHibernate sont inchangées pour autant que je sache.
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/
Grand - merci pour cela. Travaillé parfaitement. Je reçois toujours des messages de schéma dans le fichier web.config pour l'élément syscache mais ce ne sont que des avertissements. Merci encore. – Matt
Il vaut probablement la peine de souligner que si vous utilisez SysCache2, vous devez nommer votre élément de configuration "syscache2" au lieu de "syscache". –