ICriteria SetCacheable到期时间

时间:2010-02-17 09:21:11

标签: nhibernate caching criteria

我想知道如何使NHibernate在第二级缓存中存储我的查询达指定时间 我只看到实体缓存。

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

默认情况下不启用查询缓存。要在hibernate.cfg.xml中启用它:

<add key="hibernate.cache.use_query_cache" value="true" />

您应该为查询指定缓存区域。如果未指定,则该区域将为“NHibernate.Cache.StandardQueryCache”。

Session.CreateCriteria<User>()
    .SetCacheRegion("UserQuery")
    .List();

对于syscache,在app.config中配置了缓存区域:

<configuration>
    <configSections>
        <section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler,NHibernate.Caches.SysCache" />
    </configSections>    
    <syscache>
        <cache region="User" expiration="300" priority="3" />
        <cache region="UserQuery" expiration="60" priority="3" />
    </syscache>
</configuration>