Je n'arrive pas à ajouter un objet à un contexte d'objet dans Entity Framework.C# Ajouter un nouvel objet à un contexte d'objet renvoie "erreur survenue lors de la mise à jour des entrées", entrée dupliquée pour clé primaire
Voici le 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();
Sur SaveChanges(), je reçois un UpdateException, en disant qu'il ya une entrée en double '0' pour Key 'PRIMAIRE. Il est vrai que j'ai déjà un objet dans mes "Composantes" avec id = 0. Et si je le supprime, je peux au moins créer un objet avec ID = 0. Ce que je ne comprends pas, c'est que quand un nouvel objet est ajouté au contexte, pourquoi ne prend-il pas le prochain ID disponible ???? C'est exactement la même erreur qui se produisait avant que j'essaie de créer cet objet dans un nouveau contexte .... C'est peut-être à cause d'un paramètre manquant dans mon model.edmx? Existe-t-il un moyen de forcer l'attribution d'un nouvel identifiant à l'objet nouvellement créé?
Je me connecte à la base de données mysql à l'aide d'un modèle de structure d'entité à l'aide de Devart dot.connector pour me connecter à la base de données. En vous remerciant d'avance pour votre réponse à cette question simple.
Pierre