C# 会话之间的NHibernate二级缓存

C# 会话之间的NHibernate二级缓存,c#,.net,nhibernate,orm,fluent-nhibernate,C#,.net,Nhibernate,Orm,Fluent Nhibernate,因此,据我所知,第二级缓存应该在会话之间保持,因为它存储在SessionFactory级别,但是我无法生成此结果 我不确定问题出在哪里,但我的会话工厂配置如下: var hibernateConfig = Fluently.Configure(); hibernateConfig.Database(MySQLConfiguration .Standard .ConnectionString(cs => cs.Server(sqlCon

因此,据我所知,第二级缓存应该在会话之间保持,因为它存储在SessionFactory级别,但是我无法生成此结果

我不确定问题出在哪里,但我的会话工厂配置如下:

var hibernateConfig = Fluently.Configure();
hibernateConfig.Database(MySQLConfiguration
              .Standard
              .ConnectionString(cs => cs.Server(sqlConfig["host"].ToString())
                .Database(sqlConfig["database"].ToString())
                .Username(sqlConfig["username"].ToString())
                .Password(sqlConfig["password"].ToString())
              ));
hibernateConfig.Mappings(m => m.FluentMappings.AddFromNamespaceOf<NodeEntity>());
hibernateConfig.Cache(c => c.UseQueryCache().UseSecondLevelCache().ProviderClass<NHibernate.Cache.HashtableCacheProvider>());
SessionFactory = hibernateConfig.BuildSessionFactory();
<configSections>
    <section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache" requirePermission="false" />
</configSections>

<syscache>
    <cache region="Entities" expiration="3600" priority="5" />
    <cache region="ShortTerm" expiration="900" priority="3" />
</syscache>
从本文中我了解到,缓存在相同的会话中工作正常,但在打开新会话时不会工作

“我的所有实体”的映射中还包含以下代码:

Cache.ReadWrite().Region("Entities");
我错过了什么?是否可以在会话之间维护缓存?
在本例中,我使用HashTableProvider。我也尝试过使用Syscache,但运气不佳。

我不确定这是否重要,但您也可以在查询本身上指定一个缓存区域。我总是为我的查询指定一个区域。回答主要问题:在会话之间维护缓存是否可能?答案是肯定的,我一直这样做。但我不确定为什么在这种情况下它似乎对您不起作用。我尝试在查询中添加CacheRegion定义。不工作:(…我的实体引用其他实体。这是否会影响缓存?
00:00:12.0721413
00:00:00.0350096
00:00:10.6184812
00:00:00.0350119
Cache.ReadWrite().Region("Entities");