Entity Framework のオブジェクト コンテキストにオブジェクトを追加しようとすると問題が発生します。
コードは次のとおりです。
//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("it.id_nivcycle=@id", new ObjectParameter("id", idnivcycle)).First();
Etablissement eta = ctest.Etablissements.Where("it.Id=@id", 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();
SaveChanges() で、キー 'PRIMARY' に重複するエントリ '0' があることを示す UpdateException を受け取ります。「Composantes」に id=0 のオブジェクトが既にあることは事実です。それを削除すると、ID=0 のオブジェクトを少なくとも 1 つ作成できます。私が理解できないのは、新しいオブジェクトがコンテキストに追加されたときに、次に利用可能な ID を取得しないのはなぜですか???? これは、新しいコンテキストでこのオブジェクトを作成しようとする前に発生していたエラーとまったく同じです..これは、私の model.edmx にパラメーターが見つからないためでしょうか? 新しく作成されたオブジェクトに新しいIDの帰属を強制する方法はありますか?
Devart dot.connector を使用してエンティティ フレームワーク モデルを使用して mysql データベースに接続し、データベースに接続しています。この単純な質問に回答してくださったすべての皆様に、事前に感謝いたします。
ピエール