25

コードを介してNHibernateの第2レベルのキャッシュ全体をクリアしたいと思います。使用されているキャッシュプロバイダーに依存しない、これを行う方法はありますか?(同じアプリケーション内でmemcacheとsyscacheの両方を使用しているお客様がいます)。

データベースの外部で変更が発生した可能性があるため、キャッシュ全体をクリアしたいと考えています(また、影響を受けたテーブル/エンティティについては保証されていないため、最悪の事態を想定する必要があります)。

4

1 に答える 1

36

これは行う必要があります:

sessionFactory.EvictQueries();
foreach (var collectionMetadata in sessionFactory.GetAllCollectionMetadata())
         sessionFactory.EvictCollection(collectionMetadata.Key);
foreach (var classMetadata in sessionFactory.GetAllClassMetadata())
         sessionFactory.EvictEntity(classMetadata.Key);
于 2010-04-18T04:17:29.743 に答える