Как очистить весь кеш второго уровня в Nibernate
-
27-09-2019 - |
Вопрос
Я хочу очистить весь кеш второго уровня в 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);
Не связан с StackOverflow