none
Opções de Add do Entity Framework RRS feed

  • Pergunta

  • Boa tarde a todos

    Gostaria de saber qual a diferença entre os seguintes métodos:

    Ex:

    FORMA 1 : _entities.AddToOrdens(Ordem)

    FORMA 2 : _entities.AddObject("Ordens", Ordem)

    FORMA 3 : _entities.Ordens.AddObject(Ordem)

     

    Estou fazendo assim:

    Public Void Create(Ordem _ordem)

    { // O objeto _ordem vem os campos (menos o OrdemID) populados da Veiw

    // E o controller chama o Método Create(em que estamos) no Model ,

     

    Guid nwGuid = Guid.NewGuid();

      _ordem.Cliente = _entities.Clientes.Where(c => c.clienteID == Ordem.clienteID).FirstOrDefault() ;// Ordem(1) tem relacionamento com Cliente(n)

    _ordem.OrdemID = nwGuid; 

    _ordem.DataCad = DateTime.Now;

    _entities.AddToOrdens(_ordem); 

    _entities.SaveChanges(); // O erro acontece ao sair daqui dessa linha

     

    _ordem.OrdenDetalhe.OrdemID = nwGuid;

    _ordem.OrdenDetalhe.DataCad = DateTime.Now;

    _entities.AddToOrdensDetalhes(_ordem.OrdenDetalhe);

    _entities.SaveChanges();

    }

    Quando dou o SaveChanges da erro:

    Cannot insert duplicate key row in object 'dbo.Ordem' with unique index 'UQ_Ordem

    Gostaria de saber se estou usando o método certo e de forma certa.

    Resumindo. Onde estou errando ?

     

    Obs.:

    Estou usando Asp.net MVC 3 com EntityFramework 4 e C#

    Ordem e OrdemDetalhes estão relacionadas de 1 para 1

    Ordem (principal)

    OrdemDetalhes (dependente)

    Grato desde Já

     

     

    sexta-feira, 22 de abril de 2011 17:17

Todas as Respostas

  • Amigo, o EF está dizendo que você está tentando inserir uma linha que o ID está duplicado, você ja verificou se esse ID não existe ou se ele por caso não esta como automatico e que talvez não seja nem necessário passar um novo id para ele ?

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    segunda-feira, 25 de abril de 2011 11:58
  • Boa tarde Olavo,

    Action(no controller) que chama o método create(no model) passa um o objeto Ordem com o Id zerado(00000000-0000-0000-0000-000000000000 -campo do tipo guid e não  autonumérico).

    segunda-feira, 25 de abril de 2011 19:43
  • vc ja tentou abrir no sql server o indice UQ_Ordem...(O nome ficou incompleto eu acho) para ver qual campo ele se referencia ? 
    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    segunda-feira, 25 de abril de 2011 19:49
  • Boa tarde de novo Olavo,

    Eu dei uma olhada melhor, resumindo o meu problema é que a tabela Ordem tem um relacionamento de 1 para 1 com outra tabela( Movimentos) no qual a tabela ordem tem seu campo Id que é PK e Fk ao mesmo tempo e tem depencia com a tabela movimentos, tô tentando da insert nas duas e da erro na tabela.

    grato desde já 

    segunda-feira, 25 de abril de 2011 19:54