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

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

本文介绍了如何清除NHibernate中的整个二级缓存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望通过代码清除NHibernate中的整个二级缓存.有没有一种方法可以独立于所使用的缓存提供程序来执行此操作? (我们有客户在同一应用程序中同时使用内存缓存和syscache).

I wish to clear the entire second level cache in NHibernate via code. Is there a way to do this which is independent of the cache provider being used? (we have customers using both memcache and syscache within the same application).

我们希望清除整个缓存,因为可能发生了数据库外部的更改(并且我们不能保证:受影响的表/实体,因此我们必须假设最坏的情况).

We wish to clear the entire cache because of changes external to the database may have occurred (and we have no guarantees re: which tables/entities were affected, so we have to assume the worst).

推荐答案

这应该做到:

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

这篇关于如何清除NHibernate中的整个二级缓存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 04:24