c# - Nhibernate 使用 Fluent 禁用二级缓存 - 也禁用假缓存

标签 c# caching nhibernate fluent-nhibernate

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/

相关文章:

c# - 使用带有 WaitCallback 方法的 ThreadPool 与简单方法有什么区别

c# - 将硬盘串行字符串写入二进制文件

c# - ILMerge 的问题

php - 缓存zend framework 2 php代码执行结果

caching - 将大数据写入 Redis 缓存

c# - 选择 RichTextBox 行上的文本并更改其颜色

python - Django Rest 框架缓存 header

asp.net-mvc - 流利的nHibernate 2010入门指南

c# - NHibernate:级联删除的 c# 操作

.net - 使用 Ignore.NotFound 延迟加载 NHibernate