none
EF4 com poco : The ObjectContext instance has been disposed and can no longer be used for operations that require a connection RRS feed

  • 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

    sábado, 5 de fevereiro de 2011 03:08

Respostas

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 o
    var context = new MyEntities()
    
    no topo de sua classe de forma que se torne global para a classe.
    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    domingo, 6 de fevereiro de 2011 02:54
  • 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
    segunda-feira, 7 de fevereiro de 2011 17:25
  • o problema era o lazy load ativo.

    grato.

    quarta-feira, 9 de fevereiro de 2011 17:58
  • So para constar, eu estava recebendo a mesma mensagem de erro e segui o que falou o 
    Olavo Oliveira Neto. Coloquei o "context" como uma variável de classe.



    Obrigado.


    terça-feira, 21 de agosto de 2012 04:47