2009-07-28 8 views
2

Ich habe ein Problem beim Versuch, ein Objekt zu einem Objekt Kontext in Entity Framework hinzuzufügen. HierC# Hinzufügen eines neuen Objekts zu einem Objektkontext gibt "Fehler beim Aktualisieren der Einträge", doppelten Eintrag für Primärschlüssel

ist der Code:

//related object ids are retrieved from another context. 
//since I thought the problem could be linked to object loaded in this context, I tried to 
//close it and start on a fresh object context... 
int idetab = currentEtab.Id; 
long idnivcycle = selectedNivcycle.id_nivcycle; 
long idanscol = AnneeScolaireEnCours.id_annee_scolaire; 
//and this context is closed 
context.Dispose(); 


//This is the new object context 
objectcontextEntities ctest = new objectcontextEntities(); 
//from where I retrieve all the objects I want to link to the object I want to create :    
Nivcycle niv = ctest.Nivcycles.Where("[email protected]", new ObjectParameter("id", idnivcycle)).First(); 
Etablissement eta = ctest.Etablissements.Where("[email protected]", new ObjectParameter("id", Convert.ToInt32(idetab))).First(); 
annee_scolaire an = ctest.annee_scolaire.Where("it.en_cours = @id", new ObjectParameter("id", Convert.ToSByte(true))).First(); 
// Now I try to create my new object   
Composante co = new Composante(); 
co.Nom = "test"; 
co.Nivcycle = niv; 
co.Etablissement = eta; 
co.AnneeScolDeb = an; 
ctest.AddToComposantes(co); 
ctest.SaveChanges(); 
ctest.Dispose(); 

auf Savechanges(), erhalte ich eine UpdateException, sagte, dass es ein doppelter Eintrag '0' für Key 'primären'. Es ist wahr, dass ich bereits ein Objekt in meinen "Compostantes" mit id = 0 habe. Und wenn ich es lösche, kann ich wenigstens ein Objekt mit ID = 0 erstellen. Was ich nicht verstehe ist, dass wenn ein neues Objekt zum Kontext hinzugefügt wird, warum nicht die nächste verfügbare ID ??? Dies ist genau der gleiche Fehler, der passiert ist, bevor ich versucht habe, dieses Objekt in einem neuen Kontext zu erstellen ... Das liegt vielleicht an einem fehlenden Parameter in meinem model.edmx? Gibt es irgendwo einen Weg, um dem neu geschaffenen Objekt die Zuordnung einer neuen ID zu erzwingen?

Ich verbinde mich mit der MySQL-Datenbank mithilfe eines Entity-Framework-Modells mit Devart dot.connector, um eine Verbindung zur Datenbank herzustellen. Ich danke Ihnen allen im Voraus für Ihre Antwort auf diese einfache Frage.

Pierre

Antwort

6

Ich fand die Lösung selbst. Es kann nützlich sein für jemanden, der an diesem dummen Ding festhängt ... Es ist nur, weil in der Datenbank selbst das ID-Feld nicht auf AUTOINCREMENT gesetzt wurde ... Das zu ändern und die model.edmx zu aktualisieren löste das Problem. Sorry für die Störung mit Ihnen !!!!!

Verwandte Themen