estoy usando segundo nivel de almacenamiento en caché con MVC3 y NHibernate.Caches.SysCache.dll así ...
primero, añadir una sección de configuración a su archivo web.config como esto
<configSections>
<section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=6876f2ea66c9f443"/>
</configSections>
añadir una sección syscache a su web.config debajo de la sección de configuración de la siguiente manera:
<syscache>
<cache region="SomeCustomNameRegion" expiration="86400" priority="5" />
</syscache>
en mi archivo hibernate.cfg.xml tengo las siguientes propiedades añadido:
<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>
estoy usando FluentNhibernate para crear mis asignaciones y añadir esta para apoyar el almacenamiento en caché:
public CustomerClassMap()
{
Cache.NonStrictReadWrite();
Id(x => x.Id);
Map(x => x.Name);
//... more properties
}
Y luego, en mi código de acceso a datos, tengo algo similar a esto para las consultas que quiero en caché :
public IEnumerable<Customer> GetAllCached()
{
return Session.CreateCriteria(typeof(Customer))
.SetCacheable(true)
.SetCacheRegion("SomeCustomNameRegion")
.SetCacheMode(CacheMode.Normal)
.AddOrder(Order.Desc("CreateDate"))
.List<Customer>();
}
Aquí hay algunos enlaces útiles para entrar un poco más en detalle. No hay nada específico acerca de MVC3 que deba preocuparse, y la mayor parte no ha cambiado desde versiones anteriores de NHibernate hasta donde yo sé.
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/
Gran - gracias por eso. Funcionó perfectamente Todavía recibo algunos mensajes de esquema en el archivo web.config para el elemento syscache, pero solo son advertencias. Gracias de nuevo. – Matt
Probablemente vale la pena señalar que si usa SysCache2, debe nombrar su elemento de configuración "syscache2" en lugar de "syscache". –