是的,我们可以通过区域设置缓存过期。像这样调整查询:
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