none
Já existe um objeto com a mesma chave no ObjectStateManager. O ObjectStateManager não pode controlar vários objetos com a mesma chave. RRS feed

  • Pergunta

  • Estou usando o Entity Framework com o VS 2012

    Eu faço uma busca por Id com o código abaixo:

     db.Set<T>().Attach(pModel);
                    var x = db.Entry<T>(pModel);
                    x.Reload();
                    return x.Entity;   

    Acontece quando é executado pela segunda vez, dando a exceção:

    Já existe um objeto com a mesma chave no ObjectStateManager. O ObjectStateManager não pode controlar vários objetos com a mesma chave.

    Tentei achar a solução, fiz alguns testes para poder verificar se o dbset já havia o mesmo objeto mas nãoo consegui.

    Tentei fazer o teste antes de dar o attach que é db.Entry<T>().State, mas acontece que não consigo retornar o enum para fazer a comparação.

    Onde estou errando?

    Obrigado

    sábado, 8 de junho de 2013 06:51

Todas as Respostas

  • se sua intenção é fazer uma busca, tente

      public T SingleOrDefault<T>(Func<T, bool> expresao) where T : class
            {

                return _dataContext.Set<T>().SingleOrDefault(expresao);
            }

    sábado, 8 de junho de 2013 19:59