ADO.NET Data Services 'Astoria' e armazenamento em cache
-
20-08-2019 - |
Pergunta
Eu só mergulho começou em ADO.NET Data Services para um projeto, e eu rapidamente correu para um problema. No começo eu estava impressionado com o desempenho, mas depois percebi que os dados foram armazenados em cache. Meu projeto se baseia em dados em tempo real, e eu adoraria usar a sintaxe de consulta serviços REST ADO.NET Dados (sem a necessidade de usar WCF ou SOAP), mas sem cache.
Eu vi na página de introdução ADO.NET Data Services ( aqui ) que eles ainda não têm suporte API para gerenciar a duração de cache ou qualquer coisa do género.
Alguém tem alguma idéia de como fazer isso, ou desligar o cache?
Solução
Por padrão, o contexto de dados tem MergeOption conjunto para AppendOnly. Isto significa que re-pedidos só irá adicionar novas entidades e não irá atualizar os já existentes. Tente definir MergeOption para OverwriteChanges:
this.context.MergeOption = MergeOption.OverwriteChanges;
Isso funcionou para mim quando eu notei isso! Se você estiver usando dados em tempo real, então você pode querer desligar o controle de alterações completamente com a opção NoTracking.
Outras dicas
Nós fizemos um post recentemente sobre como usar ETags para controlar a política de cache de dados retornados de um serviço de dados, http://blogs.msdn.com/astoriateam/archive/2008/04/22/optimistic-concurrency-data-services.aspx
Esse link é útil, mas ele realmente não falar sobre ETags e cache, ele apenas menciona que ETags pode ser usado para cache. Você tem um exemplo?
Em profundidade detalhes sobre a ETag