Pergunta

Houve muitas perguntas sobre o gerenciamento EntityContext vida,

por exemplo Instanciando um contexto em Linq para entidades

Cheguei à conclusão de que o contexto da entidade deve ser considerado uma unidade de trabalho e, portanto, não é reutilizado. Excelente.

Mas enquanto fazia algumas pesquisas para acelerar meu acesso ao banco de dados, encontrei esta postagem no blog ...

Melhorando o desempenho da estrutura da entidade

O post argumenta que o fraco desempenho do EFS em comparação com outras estruturas é frequentemente devido ao EntityConnection objeto sendo criado cada vez que um novo EntityContext objeto é necessário.

Para testar isso, criei manualmente uma entidade estática em Global.asax.cs Application_start ().

Eu então converti todo o meu contexto usando declarações para

using( MyObjContext currContext = new MyObjeContext(globalStaticEFConnection)
{
   ....
}

Isso parece ter acelerado um pouco sem erros, até onde posso dizer.

Mas isso é seguro?

Usando um aplicativo em toda a estática EntityConnection introduzir condições de raça?

Atenciosamente, Kervin

Foi útil?

Solução

EntityConnection está documentado para não ser seguro. Eu acho que você poderia reuni -los, mas não pode usar uma conexão estática única para um aplicativo da Web, pois haverá muitos threads envolvidos.

Outras dicas

  • Se o seu contexto de EF estiver em todo

  • No meu projeto, fiz uma intença por WebRequest do contexto da EF - ou seja. Um objeto de contexto é estático desde o início até o final de uma solicitação da web e todas as operações nesse pedido funcionam com o mesmo contexto de EF. Isso acelerou significativamente meu processamento sem o problema mencionado acima.

Uma maneira de implementar isso é usar um contêiner DI (estou usando o Unity) para gerenciar a vida útil do contexto da EF. O gerente da Lifetime de solicitação da Web não é entregue fora da caixa em unidade, mas existem toneladas de artigos por aí que mostram como isso pode ser feito.

Hth.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top