Usuário com melhor resposta
EF4 com poco : The ObjectContext instance has been disposed and can no longer be used for operations that require a connection

Pergunta
-
Pessoal,
Estou em um projeto usando EF4 com POCO. Estou tendo problemas quando estou criando um novo objeto, adiciono a ele um existente, através de uma navigation property.
Por exemplo:
Usuario user = usuarioRepositorio.Buscar(1); var conta = new Conta() { TipoDaConta = tipoConta, Saldo = saldoInicial, Descricao = descricao }; conta.Usuario = user;
Quando esta última atribuição acontece, o seguinte erro aparece: The ObjectContext instance has been disposed and can no longer be used for operations that require a connection
O erro explode num método gerado pelo EF4:
private void FixupUsuario(Usuario previousValue) { ... ... }
O método usuarioRepositorio.Buscar(int i) está implementado como abaixo:
public Torcedor Buscar(int id) { Usuario usuario = null; using (var context = new MyEntities()) { var lista = context.Usuarios.Where(i => i.Id == id); usuario = lista.Count() > 0 ? lista.First() : null; } return usuario; }
Alguém sabe como resolver isto?
Obrigado
Fernando
Respostas
-
o problema era o lazy load ativo.
grato.
- Marcado como Resposta AndreAlvesLimaModerator quarta-feira, 9 de fevereiro de 2011 19:51
Todas as Respostas
-
Amigo, a questão ai está por que o seu edmx está dentro de um using que ao final da execução ele está fechando e com isto perdendo as referencias do mapeamento. tente colocar ono topo de sua classe de forma que se torne global para a classe.
var context = new MyEntities()
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :) -
verifique se o arquivo config está dentro deste projeto.
Elvis Rodrigues Analista Desenvolvedor .Net Perfil Profissional MCTS .Net Framework 2.0, MCTS SQL Server 2005 foxelv@hotmail.com -
o problema era o lazy load ativo.
grato.
- Marcado como Resposta AndreAlvesLimaModerator quarta-feira, 9 de fevereiro de 2011 19:51
-