var config =
Fluently
.Configure()
.Database(MsSqlConfiguration.MsSql2008
.IsolationLevel(IsolationLevel.ReadCommitted)
.ConnectionString(connectionString)
.DefaultSchema(defaultSchema)
.FormatSql())
.ExposeConfiguration
(
c => c.SetProperty("current_session_context_class", sessionContext)
);
if (secondLevelCacheSettings.UseSecondLevelCache)
{
if (secondLevelCacheSettings.CacheType == SecondLevelCacheSettings.SecondLevelCacheType.Memcached)
{
config.Cache(c => c.ProviderClass<MemCacheProvider>().UseQueryCache())
.ExposeConfiguration(c => c.SetProperty("expiration",
secondLevelCacheSettings.CacheExpirationMinutes.ToString()));
}
if (secondLevelCacheSettings.CacheType == SecondLevelCacheSettings.SecondLevelCacheType.HashTable)
{
config.Cache(c => c.ProviderClass<HashtableCacheProvider>().UseQueryCache());
}
}
当我不想使用二级缓存时,我想完全禁用它。似乎默认配置是使用 FakeCache。我如何禁用 FakeCache?
也在我看到的日志中,
09-04 14:14:02,088 WARN Second-level cache is enabled in a class, but no cache provider was selected. Fake cache used. - [4] NHibernate.Cache.NoCacheProvider [(null)]
似乎二级缓存默认启用,即使我们没有配置它。禁用它的更干净的方法是什么。
最佳答案
config.Cache(x => x.Not.UseSecondLevelCache());
解决了我的问题。它删除了所有日志和不必要的 CPU 周期。这是通过流利的。如果您使用配置,可能需要以下配置。
<property name="cache.use_second_level_cache">
false
</property>
关于c# - Nhibernate 使用 Fluent 禁用二级缓存 - 也禁用假缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26102509/