2010-04-18 15 views
25

Deseo borrar todo el segundo nivel de caché en NHibernate a través del código. ¿Hay alguna forma de hacerlo que sea independiente del proveedor de caché que se utiliza? (tenemos clientes que usan tanto Memcache como syscache dentro de la misma aplicación).Cómo borrar todo el segundo nivel de caché en NHibernate

Nos desea borrar toda la memoria caché debido a los cambios externos a la base de datos pueda haber ocurrido (y no tenemos garantías re: qué tablas/entidades se vieron afectados, así que tenemos que asumir lo peor).

Respuesta

36

Esto debería hacer:

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

Gracias, que hizo el truco :) – Bittercoder

+0

¿Este siguen trabajando en el reciente (por ejemplo 3.3.x.) Las emisiones de NHibernate? – DanP

+1

@DanP debería. No hubo cambios importantes en los metadatos o el almacenamiento en caché. –

Cuestiones relacionadas