none
Mestre/Detalhe com Entity Framework RRS feed

  • Pergunta

  • Olá!
    Gostaria de montar um formulário mestre-detalhe usando entity framework e bindingsource.
    Isso é possível?

    Se tivessemos um banco "db" uma tabela "Empresas":
    -empresaId
    -razaoSocial

    E uma tabela "Clientes";
    -clienteId
    -nome

    Eu montei do seguinte modo:
    bdEntity db = new bdEntity();
    
    evento load:
    {
    empresasBds.DataSource = db.Empresas.Include("Clientes");
    clientesBds.DataSoucerce = empresaBds;
    clientesBds.DataMember = "Clientes";
    clientesBds.AllowNew = true;
    }
    
    evento save:
    {
    clientesBds.EndEdit();
    empresasBds.EndEdit();
    db.SaveChanges();
    }
    Funciona muito bem para edição. Mas dá erro na hora da inserção:

    As alterações no banco de dados foram confirmadas com êxito, mas ocorreu um erro ao atualizar o contexto do objeto. O ObjectContext pode estar em estado inconsistente. Mensagem de exceção interna: AcceptChanges não pode continuar porque os valores de chave do objeto conflitam com outro objeto no ObjectStateManager. Verifique se os valores de chave são exclusivos antes de chamar AcceptChanges.

    Como se resolve isto?
    quarta-feira, 10 de março de 2010 05:30

Respostas

  • Galera é o seguinte:

    Antes de efetuar o saveChanges() é necessário executar um suspendBinding() no BindingSource.

    Depois de salvar deve-se executar um resumeBinding() no BindingSource.

    Aí os dados são persistidos direitinho.

    • Marcado como Resposta Vagnerinf terça-feira, 23 de março de 2010 23:57
    terça-feira, 23 de março de 2010 23:57

Todas as Respostas