Usuário com melhor resposta
Mestre/Detalhe com Entity Framework

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?
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
Todas as Respostas
-
Prezado,
Alguma novidade quanto a essa sua dúvida?
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
-
Hmm...
Nos exemplos que encontrei, utiliza-se o Binding Source...
Tem algum motivo para você não estar querendo utilizá-lo?
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
Na verdade quero usar qualquer coisa que me possibilite usar o entity framework como mestre-detalhe. Pode me passar o código que está utilizando para fazer isso com bindingSource?
Estou procurando outra alternativa simplesmente porque não consegui usar o bindingSource. Que me retorna o erro apresentadoa acima. -
Bom,
Você já deu uma olhada neste artigo aqui:
http://community.visual-basic.it/alessandroenglish/archive/2009/01/19/24645.aspx
?
Parece ser bem intuitivo...
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
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