2011-01-31 6 views
7

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

しかし、私はMVCアプリケーションで設定するための助けを見つけることができません。すべての例は、App.configファイルを持っていることを指しています(これはWebフォーム用です)。私は.Netを学んでいるJava開発者だから、すべてのものを整備する方法にそれほど精通していない。

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

ありがとうございました。私はこのようなMVC3とNHibernate.Caches.SysCache.dllと第二レベルのキャッシュを使用してい

答えて

9

...

第一、この

<configSections> 
    <section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=6876f2ea66c9f443"/> 
</configSections> 
のようなあなたのweb.configファイルにconfigセクションを追加

は、このようなあなたの構成セクションの下にあなたのweb.configファイルにsyscacheセクションを追加します。私の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/

+0

グレート - そのためのおかげで。完璧に働いた。私はまだsyscache要素のためのweb.configにいくつかのスキーマメッセージを取得しますが、警告のみです。再度、感謝します。 – Matt

+1

SysCache2を使用する場合、 "syscache"ではなく "syscache2"という構成要素に名前を付ける必要があります。 –

関連する問題