NHibernate + SysCache2 + SqlCacheDependency — кеш не аннулируется в приложении

У меня есть базовое приложение MVC, которое использует NHibernate для OR/M и доступа к данным, SysCache2 для кеша второго уровня в NHibernate и SqlCacheDependency для базовой логики аннулирования кеша. Я считаю, что все настроено правильно (я могу добавить подробности, если потребуется), и я вижу, что элементы кэшируются на стороне приложения.

Однако, если я обновляю элементы в таблице базы данных напрямую, обновление никогда не отправляется обратно в приложение через SqlCacheDependency и в SysCache2 в NHibernate. Итак, данные в базе обновляются и отличаются от того, что есть в кеше в приложении (в NHibernate с SysCache2).

Я вижу значение для столбца [changeId], коррелирующего с правильной таблицей доменов, увеличивающейся в таблице [AspNet_SqlCacheTablesForChangeNotification], поэтому я вполне уверен, что SQL Service Broker установлен и настроен правильно. Если я профилирую базу данных с помощью SQL Profiler, я могу увидеть вызовы настройки для очередей, служб и процедур, а также вызовы BEGIN CONVERSATION для мониторинга.

Не совсем уверен, что проверить дальше. У кого-нибудь была эта проблема раньше и каково было решение?


person longda    schedule 08.09.2011    source источник


Ответы (1)


Оказывается, основная проблема заключалась в том, что драйвер sql, который я использовал, не поддерживал пакеты. Как только я переключил его обратно на драйвер nhibernate sql 2008 по умолчанию, все пошло как по маслу.

person longda    schedule 04.10.2011