SysCache2 и FluentNhibernate в приложении MVC

У меня проблема с SysCache/SysCache2 в моем приложении MVC. Моя конфигурация кажется правильной. Я настроил это как бесчисленные примеры в Интернете.

На мой класс я положил: 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%.

Я не знаю, что я делаю здесь не так. У кого-нибудь есть идея?

1 ответ

Решение

Мне удалось решить эту проблему. Это было связано с моим созданием сессии. Я не использовал сессию для каждого запроса, который вызвал не кеширование. Я создал транзакцию в начале, и она длилась всю сессию. Мне удалось инициировать входящий кэш, если я снова открыл сессию в рамках использования mark вроде: using(var sess = session.SessionFactory.OpenSession()), но это решение было только обходным путем, которое мне не подходило, поэтому я изменил способ создания сессий во-первых, и теперь он работает нормально!:)

Другие вопросы по тегам