Как очистить кеш второго уровня в NHibernate
Я хочу очистить весь кеш второго уровня в NHibernate с помощью кода. Есть ли способ сделать это, который не зависит от используемого поставщика кеша? (у нас есть клиенты, использующие как memcache, так и syscache в одном приложении).
Мы хотим очистить весь кеш из-за того, что произошли изменения, внешние по отношению к базе данных (и у нас нет гарантий re: какие таблицы/сущности были затронуты, поэтому мы должны принять худшее).
Ответы
Ответ 1
Это должно сделать:
sessionFactory.EvictQueries();
foreach (var collectionMetadata in sessionFactory.GetAllCollectionMetadata())
sessionFactory.EvictCollection(collectionMetadata.Key);
foreach (var classMetadata in sessionFactory.GetAllClassMetadata())
sessionFactory.EvictEntity(classMetadata.Key);