Подтвердить что ты не робот

Как очистить кеш второго уровня в NHibernate

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

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

4b9b3361

Ответ 1

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

sessionFactory.EvictQueries();
foreach (var collectionMetadata in sessionFactory.GetAllCollectionMetadata())
         sessionFactory.EvictCollection(collectionMetadata.Key);
foreach (var classMetadata in sessionFactory.GetAllClassMetadata())
         sessionFactory.EvictEntity(classMetadata.Key);