Asp.net-Mvc

在 MVC 應用程序中配置 NHibernate 二級記憶體

  • March 29, 2013

我有一個使用 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/

引用自:https://stackoverflow.com/questions/4853840