我正在使用 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 部分添加到配置部分下的 web.config 中,如下所示:
<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://www.klopfenstein.net/lorenz.aspx/using-syscache-as-secondary-cache-in-nhibernate
http://blog.symbiotic-development.com/2008/02/27/more-configuring-nhibernate-caches/ http://blog.symbiotic-development.com/2008/02/27/more-configuring-nhibernate-caches/