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()), но это решение было только обходным путем, которое мне не подходило, поэтому я изменил способ создания сессий во-первых, и теперь он работает нормально!:)