/ / MVCアプリケーションでNHibernateの第2レベルのキャッシュを設定する - asp.net-mvc、nhibernate、キャッシング

MVCアプリケーションでNHibernateの第2レベルのキャッシュを設定する - asp.net-mvc、nhibernate、キャッシング

私はNHibernateを使用しているMVC3アプリケーションを持っています。 私が第2レベルのキャッシュを追加しようとするまで、すべてうまくいっていました。数時間ウェブを閲覧した後、私は最終的に正しいDLL(NHibernate.Caches.SysCache2.dll)と思ったことを見つけ、プロジェクトに追加しました。

しかし、私はそれを設定するための助けを見つけることができませんMVCアプリですべての例は、App.configファイルを持っていることを指しています(これはWebフォーム用です)。私はJavaの開発者であり、.NETを学んでいるので、すべてを磨く方法に慣れていません。

誰かが私を正しい方向に向けることができますか?私はxml hibernate(hbm)ファイルを使用しています。

ありがとう。

回答:

回答№1については9

私はMVC3とNHibernate.Caches.SysCache.dllで2番目のレベルのキャッシュを使っています...

第1に、このようなweb.configファイルに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/