4

是否可以配置 NHibernate 的查询缓存过期?

对于二级缓存,我可以从 中进行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>

编辑:我只是添加这个链接Class-cache not used when getting entity by criteria 确定我所说的SQL Query cache是什么意思。在链接的答案中,我正在解释该主题

只是为了清楚。NHibernate“会话工厂”的配置必须包含:

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

此开关将使查询缓存工作。更多细节: http: //nhibernate.info/doc/nh/en/index.html#performance-querycache

于 2012-10-30T18:42:21.083 回答