我一直在研究使用 fluent 和 syscache2 的 WCF 服务。关于我目前的困境,我几乎阅读了所有关于 SO 的文章;我没有运气。
我正在尝试为我的二级缓存设置过期时间。我设置的任何值似乎都被忽略了,默认值 5 分钟用于使缓存过期。
流畅的配置:
注意: contextClass 只是一个描述符类,保存传递给配置的值。
var cfg = Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.Is(connectionString))
.ShowSql()
)
.Diagnostics(d => d.Enable())
.Cache(c => c
.UseQueryCache()
.ProviderClass(typeof(NHibernate.Caches.SysCache2.SysCacheProvider).AssemblyQualifiedName))
.Mappings(m => m
.FluentMappings
.AddFromAssembly(assembly))
.ExposeConfiguration(x =>
{
x.SetProperty(NHibernate.Cfg.Environment.CurrentSessionContextClass, contextClass.Id);
x.SetProperty(NHibernate.Cfg.Environment.PrepareSql, contextClass.PrepareSql); //set prepare_sql true/false
x.SetProperty(NHibernate.Cfg.Environment.CacheDefaultExpiration, contextClass.ExpireL2Cache); //set default expiration in seconds
});
我还将 app.config 文件设置如下:
<configSections>
<section name="syscache" type="NHibernate.Caches.SysCache2.SysCacheSection, NHibernate.Caches.SysCache2"/>
</configSections>
<syscache>
<cache expiration="600" priority="5" />
</syscache>
app.config 有一个变体,它有一个使用区域的 syscache 部分,但也不起作用。
有人对想法有什么建议吗?
谢谢