我使用的是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在你的配置部分是這樣的:在我的hibernate.cfg.xml文件
<syscache>
<cache region="SomeCustomNameRegion" expiration="86400" priority="5" />
</syscache>
我有以下特性補充說:
<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/
大 - 感謝。完美工作。我仍然在web.config中爲syscache元素獲取了一些架構消息,但它們只是警告。再次感謝。 – Matt 2011-02-01 09:47:09