0

我在我的MVC应用程序中遇到SysCache/SysCache2问题。我的配置似乎是正确的。我已经在网上设置了无数个例子。MVC应用程序中的SysCache2和FluentNhibernate

在我的课上我已经把:Cache.Region("LongTerm").NonStrictReadWrite().IncludeAll(); 这是我为应用程序缓存做的测试。

[Test] 
     public void cache() 
     { 
      using (var session = sessionFactory.OpenSession()) 
      using (var tx = session.BeginTransaction()) 
      { 
       var acc = session.QueryOver<Log>().Cacheable().List(); 
       tx.Commit(); 
      } 

      var test = sessionFactory.Statistics.SecondLevelCacheHitCount; 

      using (var session = sessionFactory.OpenSession()) 
      { 
       var acc = session.QueryOver<Log>().List(); 
      } 

      var test1 = sessionFactory.Statistics.SecondLevelCacheHitCount; 
     } 

第一条语句被缓存,正如我在会话工厂统计信息中看到的(例如230条记录)。 如果我理解它正确的第二条语句不应该击中分贝,但缓存。 这里的问题是,它无论如何都会去DB。与分析器检查是100%确定。

我不知道我在这里做错了什么。任何人有想法?

回答

3

我设法解决了这个问题。这与我的会话创建有关。我没有使用触发不会缓存的每个请求的会话。我在开始时创建了事务,并持续了整个会话。我设法触发进入缓存,如果我使用标记像使用(var sess = session.SessionFactory.OpenSession())再次打开会话,但此解决方案只是一个解决方案,不适合我,所以我改变了我如何创建会话首先,它现在工作正常! :)

+0

+1在自己找出问题后提供答案+1 – ChrisWue