0

我的 MVC 应用程序上的 SysCache/SysCache2 有问题。我的配置似乎是正确的。我已经像网络上无数的例子一样设置了它。

在我的课堂上,我已经提出: 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 条记录)。如果我理解正确,下面的第二条语句不应该命中数据库,而是缓存。这里的问题是它无论如何都会进入数据库。用探查器检查以 100% 确定。

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

4

1 回答 1

3

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

于 2011-11-08T07:28:16.607 回答