2009-07-28 14 views
2

Entity Frameworkのオブジェクトコンテキストにオブジェクトを追加しようとして問題があります。c#オブジェクトコンテキストに新しいオブジェクトを追加すると、「エントリの更新中にエラーが発生しました」というメッセージが返されます。

//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(); 

のSaveChanges()、私は重複したエントリがあることを言って、UpdateExceptionを受ける '0' キー 'PRIMARY' の場合:ここで

はコードです。 私は既に "Composantes"にid = 0のオブジェクトを持っているのは事実です。私がそれを削除すると、ID = 0のオブジェクトを少なくとも1つ作成することができます。私が理解できないことは、新しいオブジェクトがコンテキストに追加されたときに、なぜ次の利用可能なIDを取得しないのでしょうか?これは、新しいコンテキストでこのオブジェクトを作成しようとする前に起こったのとまったく同じエラーです。これはおそらく、私のmodel.edmxのパラメータがないためですか?新たに作成されたオブジェクトに新しいIDのアトリビュートを強制する方法がありますか?

データベースに接続するために、Devart dot.connectorを使用して、エンティティフレームワークモデルを使用してmysqlデータベースに接続しています。 この簡単な質問への返信をお寄せいただきありがとうございます。

ピエール

答えて

6

私は解決策を自分で見つけました。この馬鹿げたことに悩まされている人にとっては便利かもしれません... IDENTITYフィールドがAUTOINCREMENTに設定されていないからです。 これを変更してmodel.edmxを更新すると、問題は解決しました。 このことをお詫びして申し訳ありません!!!!!

関連する問題