4

NHibernateのクエリキャッシュの有効期限を設定することは可能ですか?

第2レベルのキャッシュの場合、から実行できnhibernate.cfg.xmlますが、SQLクエリキャッシュの方法が見つかりません。

編集:

ICriteria query = CreateCriteria()
                  .Add(Expression.Eq("Email", identifiant))
                  .SetCacheable(true)
                  .SetCacheRegion("X");



 <syscache>
    <cache region="X" expiration="10" priority="1" />
  </syscache>
4

1 に答える 1

6

はい、リージョンを介してキャッシュの有効期限を設定できます。次のようにクエリを調整します。

criteria.SetCacheable(true)
    .SetCacheMode(CacheMode.Normal)
    .SetCacheRegion("LongTerm");

そして、同様の構成をweb.configファイルに入れます

<configSections>
    <section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache" requirePermission="false" />
</configSections>
<syscache>
    <cache region="LongTerm" expiration="180" priority="5" />
    <cache region="ShortTerm" expiration="60" priority="3" />
</syscache>

編集:私はこのリンクを追加していますクラス-基準によってエンティティを取得するときに使用されないキャッシュSQLクエリキャッシュ が何を意味するかを確認するために。リンクされた回答で私はそのトピックを説明しています

わかりやすくするために。NHibernateの「session-factory」の構成には次のものが含まれている必要があります。

<property name="cache.use_query_cache">true</property>

このスイッチにより、クエリキャッシュが機能します。詳細: http: //nhibernate.info/doc/nh/en/index.html#performance-querycache

于 2012-10-30T18:42:21.083 に答える