【问题标题】:SysCache2 and FluentNhibernate on MVC aplicationMVC 应用程序上的 SysCache2 和 Fluent Nhibernate
【发布时间】:2011-10-31 15:29:01
【问题描述】:

我的 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% 确定。

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

【问题讨论】:

    标签: model-view-controller nhibernate fluent-nhibernate syscache2 syscache


    【解决方案1】:

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

    【讨论】:

    • +1 用于在自己解决问题后提供答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多