Usuário com melhor resposta
Entity Framework Context

Pergunta
-
Pessoal, venho tendo o seguinte problema:<o:p></o:p>
Quando faço alguma atualização direto no banco de dados (update table) e refaço a pesquisa na aplicação, que usa o Entity Framework, sem recriar o contexto novamente, o dado retornado é o anterior ao update feito no banco.<o:p></o:p>
Gostaria, que quando fizesse a consulta pelo meu sistema usando o Entity Framework, eu não precisasse informar que houve alterações no banco pra ele recarregar as entidades, ou seja, toda vez que é feita uma consulta ele vá até o banco e retorno os dados, sem precisa ficar recriando o contexto.<o:p></o:p>
Respostas
-
Descobri o meu problema
o que esta acontecendo é que estou usando alguns métodos estáticos e minha aplicação é web, fiz alguns testes onde reescrevi o método como não estático e minha aplicação passou a se comportar como eu esperava.
agora é só alterar as 100 e poucas classes de minha aplicação :( que em média tem uns 3 métodos estáticos :( :( e as chamadas a esses métodos :( :( :(
vai ser um bom trabalho para o find.
- Marcado como Resposta Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator sábado, 16 de junho de 2012 17:47
Todas as Respostas
-
Olaá Pablo,
Neste caso, vc deve considerar a opção MergeOption.NoTracking .
Isso irá afetar o modo como o ObjectContext mantém o estado de seus objetos e pode impactar na hora de atualizar registros na base de dados, dependendo do seu código.
Alguns links para estudo:http://blogs.msdn.com/b/wriju/archive/2010/07/09/ef4-use-mergeoption-notracking-for-better-query-performance.aspx
http://msdn.microsoft.com/en-us/library/bb345303.aspx.
ps.: Eu acho que trabalhar com a abertura e fechamento do ObjectContext.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique- Sugerido como Resposta Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator sábado, 16 de junho de 2012 17:47
-
Hum, interessante, mas não gostaria de ter que fazer esta atribuição para minha Entidade toda vez que for preciso consultar os dados no banco, pois existe o Context.Refresh que serviria para o caso tambem.
O ideal seria uma configuração global no Entity Framework que toda vez que faço uma consulta ele vá até o banco e retorne os dados atuais e não consulte a cache, pois tenho algumas consultas que envolve mais Entidades.
Vejo isso de ter que dar um Refresh, toda vez que for consulta, como uma tarefa custosa para um sistema que tenha um pouco mais de 100 Entidades.
- Sugerido como Resposta rs.developer sábado, 16 de junho de 2012 17:45
-
Descobri o meu problema
o que esta acontecendo é que estou usando alguns métodos estáticos e minha aplicação é web, fiz alguns testes onde reescrevi o método como não estático e minha aplicação passou a se comportar como eu esperava.
agora é só alterar as 100 e poucas classes de minha aplicação :( que em média tem uns 3 métodos estáticos :( :( e as chamadas a esses métodos :( :( :(
vai ser um bom trabalho para o find.
- Marcado como Resposta Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator sábado, 16 de junho de 2012 17:47