Pregunta

Deseo borrar todo el caché de segundo nivel en NHibernate a través de código. ¿Hay una manera de hacer esto que es independiente del proveedor de memoria caché que se utiliza? (Tenemos clientes que utilizan tanto Memcache y syscache dentro de la misma aplicación).

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, por lo que tenemos que asumir lo peor)

.
¿Fue útil?

Solución

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top