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).

Foi útil?

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
scroll top