我正在使用 MVC3 和 NHibernate.Caches.SysCache.dll 这样的二级缓存...
1st,像这样在你的 web.config 文件中添加一个配置部分
<configSections>
<section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=6876f2ea66c9f443"/>
</configSections>
在您的配置部分下的 web.config 中添加一个 syscache 部分,如下所示:
<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/