[RESOLVIDO]Erro ao adicionar um segundo registro com o Entity

Odpovědět [RESOLVIDO]Erro ao adicionar um segundo registro com o Entity

  • domingo, 4 de março de 2012 15:06
     
      Contém Código

    Pessoa, estou com um problema usando o Entity. A primeira vez que adiciono o registro funciona normalmente, mas quando vou adicionar um segundo registro ele dá a seguinte exception: "The EntityKey property can only be set when the current value of the property is null".

    Não consigo entender o que pode ser esse erro. Já procurei pela internet mas sem sucesso.

    na classe ClienteDAL

    MasterDBEntities masterDB = null;

    public int SaveRegistro(Cliente registo)

    {

    using (masterDB = new MasterDBEntities())

            {

            masterDB.AddToCliente(registo);

                    masterDB.SaveChanges();

            }

            return registo.cod_cliente;

    }

    A chave é gerado com Identity.

    As outras operações CRUD estão funcionando normalmente.

    Alguém sabe o que pode ser?

    Obs. Não achei um local no fórum sobre Entity, por isso postei aqui. Desculpe-me se não é o local apropriado.



Todas as Respostas

  • segunda-feira, 5 de março de 2012 11:43
    Moderador
     
     

    Amigo, bom dia

    no seu mapeamento, o campo está setado como:

    Entity Key = True

    Default Value = (None)

    ?


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Se for útil marque como resposta e faça um Developer feliz :)

  • segunda-feira, 5 de março de 2012 23:25
     
     Respondido

    Oi Olavo.

    Consegui resolver o problema.

    O que estava acontecendo era que o SaveChange retorna a chave primaria que do registro que foi cadastrado, mas para isso o atributo do objeto passado por paramento deve está nulo. 

    Como eu estava usando o mesmo objeto só mudando os atributo, ele acabava passando a chave primaria do registro cadastrado anteriormente.

    Consegui descobrir percebendo que quando fechava o form de cadastro e abria de novo o registro era salvo normalmente na 1º vez.

    Obrigado pela atenção.