Как очистить весь кэш второго уровня в NHibernate - PullRequest
25 голосов
/ 18 апреля 2010

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

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

1 Ответ

36 голосов
/ 18 апреля 2010

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

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