我一直在使用流利和syscache2的WCF服務。我幾乎讀過關於我目前困境的每篇文章;我沒有運氣。流利的NHibernate的Syscache2緩存過期
我想設置我的二級緩存到期時間。無論我設置的值是什麼似乎都被忽略,並且默認值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>
有這有那的區域使用一個syscache部分在app.config的一個變種,但沒有奏效無論是。
任何人有任何意見建議?
感謝
SetProperty等同於編寫Properties [「keyName」]。當我看到Environment類時,我能夠找到以下內容:'public const string CacheDefaultExpiration =「cache.default_expiration」; '我試着做你提到的流暢配置。但是,我無法在設置中訪問配置中的會話工廠。該代碼目前正在使用NH 3.2.0.400和fNH 1.3.0.717 – 2012-07-31 15:38:30
嗯,也許這是更新的,但我認爲它將在3.0以上。你確定你正在引用NHibernate.Cfg命名空間嗎?如果沒有,您將無法訪問配置中的擴展方法。 – AlexCuse 2012-07-31 16:35:59
我覺得我的工作。我不知道,但是......你的提示肯定有幫助......因爲事實證明NHibernate.Cfg命名空間丟失了。非常感謝! – 2012-08-03 03:02:30