Вопрос

Я хочу очистить весь кеш второго уровня в Nibernate через код. Есть ли способ сделать это, что не зависит от используемого провайдера кэша? (У нас есть клиенты, использующие как memcache, так и Syscache в том же приложении).

Мы хотим очистить весь кэш из-за изменений, которые могут произойти внешние в базу данных (и у нас нет никаких гарантий Re: какие таблицы / организации были затронуты, поэтому мы должны взять на себя худшее).

Это было полезно?

Решение

Это должно сделать:

sessionFactory.EvictQueries();
foreach (var collectionMetadata in sessionFactory.GetAllCollectionMetadata())
         sessionFactory.EvictCollection(collectionMetadata.Key);
foreach (var classMetadata in sessionFactory.GetAllClassMetadata())
         sessionFactory.EvictEntity(classMetadata.Key);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top