Bonjour,
Je reprends EF4 sous VB2010. J'ai un souci et ne trouve pas pourquoi.
1 table Parent et 1 Enfant.
Je fait glisser sur un Formulaire un datagridview pour la table Parent (depuis la source de données).
Tout fonctionne bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub frmTest_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load ParentBindingSource.DataSource = aObjectContext.asaParent End Sub Private Sub BindingNavigatorDataSave_Click(sender As System.Object, e As System.EventArgs) Handles BindingNavigatorDataSave.Click Me.Validate() aObjectContext.SaveChanges() End Sub
Si je glisse sur le formulaire un datagridview pour la table enfant, la seule modification est l'apparition du bindingsource enfant sur le form. Je ne fait aucun autre changement.
Le souci est le suivant dans l'ordre :
- j'ajoute une nouvelle ligne Parent
- je clique sur la dernière ligne de la grille parent (celle avec "*"), je ne fais rien sur cette ligne et reviens sur celle créée.
- Je lance le SaveChange()
L'erreur suivante apparait :
"Les modifications apportées à la base de données ont été validées, mais une erreur s'est produite lors de la mise à jour du contexte de l'objet. ObjectContext est peut-être dans un état incohérent. Message d'exception interne : AcceptChanges ne peut pas continuer, car les valeurs de clés de l'objet sont en conflit avec un autre objet dans ObjectStateManager. Assurez-vous que les valeurs de clés sont uniques avant d'appeler AcceptChanges."
Le nouvel enregistrement est bien inséré dans la base de données.
Si ne ne vais pas sur la ligne "*", cette erreur n'apparait pas.
Si je ne mets pas le bindingsource enfant sur le form, l'erreur n'apparait pas.
Que se passe-t-il donc???
Laumon.
Partager