Como limpar todo o cache de segundo nível em Nibernate
-
27-09-2019 - |
Pergunta
Desejo limpar todo o cache de segundo nível em Nibernate via código. Existe uma maneira de fazer isso que seja independente do provedor de cache que está sendo usado? (Temos clientes usando o Memcache e o Syscache no mesmo aplicativo).
Desejamos limpar todo o cache devido a alterações externas ao banco de dados podem ter ocorrido (e não temos garantias: quais tabelas/entidades foram afetadas, por isso temos que assumir o pior).
Solução
Isso deve fazer:
sessionFactory.EvictQueries();
foreach (var collectionMetadata in sessionFactory.GetAllCollectionMetadata())
sessionFactory.EvictCollection(collectionMetadata.Key);
foreach (var classMetadata in sessionFactory.GetAllClassMetadata())
sessionFactory.EvictEntity(classMetadata.Key);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow