我希望通过代码清除NHibernate中的整个二级缓存。有没有办法做这个独立于正在使用的缓存提供程序? (我们让客户在同一个应用程序中同时使用memcache和syscache。)
我们希望清除整个缓存,因为数据库外部可能发生了更改(我们无法保证:哪些表/实体受到影响,因此我们必须假设最差)。
答案 0 :(得分:36)
这应该做:
sessionFactory.EvictQueries();
foreach (var collectionMetadata in sessionFactory.GetAllCollectionMetadata())
sessionFactory.EvictCollection(collectionMetadata.Key);
foreach (var classMetadata in sessionFactory.GetAllClassMetadata())
sessionFactory.EvictEntity(classMetadata.Key);