views:

286

answers:

1

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 changes external the database would have occurred (which we have no guarantees re: which tables/entities were affected).

+5  A: 

This should do:

sessionFactory.EvictQueries();
foreach (var collectionMetadata in sessionFactory.GetAllCollectionMetadata())
         sessionFactory.EvictCollection(collectionMetadata.Key);
foreach (var classMetadata in sessionFactory.GetAllClassMetadata())
         sessionFactory.EvictEntity(classMetadata.Key);
Diego Mijelshon
Thanks, that did the trick :)
Bittercoder