在 MVC 應用程序中配置 NHibernate 二級記憶體
我有一個使用 NHibernate 的 MVC3 應用程序。一切都很順利,直到我開始嘗試添加二級記憶體。瀏覽網頁幾個小時後,我終於找到了我認為正確的 dll(NHibernate.Caches.SysCache2.dll)並將其添加到我的項目中。
但是,我找不到使用 MVC 應用程序配置它的任何幫助。所有範例都指的是擁有一個 App.config 文件(我認為這是針對 Web 表單的)。我是一名正在學習 .Net 的 Java 開發人員,所以我不太熟悉如何安裝所有內容。
有人可以指出我正確的方向。我正在使用 xml hibernate (hbm) 文件。
謝謝。
我正在像這樣使用帶有 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/