如何在NHibernate中清除整个二级缓存

时间:2010-04-18 01:11:41

标签: nhibernate memcached second-level-cache syscache2

我希望通过代码清除NHibernate中的整个二级缓存。有没有办法做这个独立于正在使用的缓存提供程序? (我们让客户在同一个应用程序中同时使用memcache和syscache。)

我们希望清除整个缓存,因为数据库外部可能发生了更改(我们无法保证:哪些表/实体受到影响,因此我们必须假设最差)。

1 个答案:

答案 0 :(得分:36)

这应该做:

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