Как очистить NHibernate Cache на любых исключениях - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть одно веб-приложение NHibernate.Я использовал sys кеш провайдер.При выполнении любой транзакции из-за какой-либо проблемы со связью между сервером БД или сервером приложений (например, проблема n / w) запрос завершится неудачей, и это очевидно.Но проблема в том, что этот результат, т. Е. Исключение, кэшируется для этого запроса, последующее выполнение возвращает тот же результат.

В худшем случае это происходит даже при проблеме управления версиями, т. Е., Например, при обновлении сущности домена та же строка уже была обновлена ​​другой транзакцией, выполнение запроса выдает исключение с сообщением «Строка была обновлена ​​или удаленадругая транзакция ".Этот результат кэшируется на период времени настройки кэша по умолчанию (5 минут).

Как настроить, чтобы не кэшировать результат при исключении или как очистить кэшированный результат во время этого сценария?

Спасибо за помощь.

Спасибо и С уважением,Виджай Пандуранган

1 Ответ

0 голосов
/ 09 января 2012

Вы можете отловить выбрасываемое исключение, а затем, в зависимости от исключения, удалить объект из кэша с помощью ISession.Evict () (существует несколько переопределений, и EvictCollection () также существует).Чтобы сделать недействительным весь кеш, вы можете использовать ISession.Clear ().Если вы действительно не доверяете этому, я бы, вероятно, полностью создал новую ISession.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...