SysCache2 и FluentNhibernate в приложении MVC - PullRequest
0 голосов
/ 31 октября 2011

У меня проблема с 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 Ответ

3 голосов
/ 08 ноября 2011

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

...