Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Sempre que uma tentativa de executar uma consulta é feita, o pipeline de consulta pesquisa seu cache de plano de consulta para ver se a consulta exata já está compilada e disponível. Em caso afirmativo, ele reutiliza o plano armazenado em cache em vez de criar um novo. Se uma correspondência não for encontrada no cache do plano de consulta, a consulta será compilada e armazenada em cache. Uma consulta é identificada por sua coleção de parâmetros e texto sql de entidade (nomes e tipos). Todas as comparações de texto diferenciam maiúsculas de minúsculas.
Configuração
O cache do plano de consulta é configurável por meio do EntityCommand.
Para habilitar ou desabilitar o cache do plano de consulta, EntityCommand.EnablePlanCachingdefina essa propriedade como true ou false. Desabilitar o cache de planos para consultas dinâmicas individuais que dificilmente serão usadas mais do que uma vez melhora o desempenho.
Você pode habilitar o cache do plano de consulta por meio EnablePlanCachingde .
Prática recomendada
As consultas dinâmicas devem ser evitadas, em geral. O exemplo de consulta dinâmica a seguir é vulnerável a ataques de injeção de SQL, pois usa a entrada do usuário diretamente sem nenhuma validação.
var query = "SELECT sp.SalesYTD FROM AdventureWorksEntities.SalesPerson as sp WHERE sp.EmployeeID = " + employeeTextBox.Text;
Se você usar consultas geradas dinamicamente, considere desabilitar o cache do plano de consulta para evitar o consumo desnecessário de memória para entradas de cache que dificilmente serão reutilizados.
O cache do plano de consulta em consultas estáticas e consultas parametrizadas pode fornecer benefícios de desempenho. Veja a seguir um exemplo de uma consulta estática:
var query = "SELECT sp.SalesYTD FROM AdventureWorksEntities.SalesPerson as sp";
Para que as consultas sejam correspondidas corretamente pelo cache do plano de consulta, elas devem estar em conformidade com os seguintes requisitos:
O texto de consulta deve ser um padrão constante, de preferência uma cadeia de caracteres constante ou um recurso.
EntityParameter ou ObjectParameter deve ser usado sempre que um valor fornecido pelo usuário deve ser passado.
Você deve evitar os seguintes padrões de consulta, que consomem desnecessariamente slots no cache do plano de consulta:
Alterações na letra maiúsculas e minúsculas no texto.
Alterações no espaço em branco.
Alterações em valores literais.
Alterações no texto dentro de comentários.