2010-04-18 4 views
25

Je souhaite effacer tout le cache de second niveau dans NHibernate via du code. Existe-t-il un moyen de faire cela indépendamment du fournisseur de cache utilisé? (Nous avons des clients qui utilisent à la fois memcache et syscache dans la même application). Nous souhaitons effacer tout le cache en raison de changements externes à la base de données (et nous n'avons aucune garantie quant aux tables/entités affectées, donc nous devons supposer le pire).Comment effacer l'intégralité du cache de second niveau dans NHibernate

Répondre

36

Cela devrait faire:

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

Merci, qui a fait l'affaire :) – Bittercoder

+0

cela fonctionne toujours (3.3.x par exemple.) Versions récentes de NHibernate? – DanP

+1

@DanP devrait le faire. Il n'y avait pas de changements majeurs aux métadonnées ou à la mise en cache. –

Questions connexes