Мы используем NHibernate с Memcache в качестве кэша второго уровня. Иногда возникает необходимость в более сложных запросах или массовых операциях запросов. Из книги Nhibernate в действии они рекомендуют следующее:
"Мы считаем, что ORM не подходит для операций массового обновления (или массового удаления). Если
у вас есть такой пример использования, другая стратегия почти всегда лучше: вызвать сохраненный
процедуры в базе данных, или использовать прямые операторы SQL UPDATE и DELETE для этого
особый вариант использования. "
Меня беспокоит то, что запросы к базовой базе данных не отражаются в кеше (по крайней мере, до истечения срока действия кеша), и мне было интересно, кто-нибудь придумал какие-нибудь эффективные стратегии для смешивания и сопоставления NHibernate с пользовательскими операторами SQL? *
Есть ли способ заставить, скажем, массовый оператор Update (выполненный с помощью пользовательского sql) отразить в кэше второго уровня? Мне известно о возможности ручного выселения, но это удаляет элементы из кэша и, следовательно, увеличивает попадания в базу данных.
Есть ли у сообщества какие-либо решения, которые оказались эффективными в решении этой проблемы?