我在嘗試將對象添加到實體框架中的對象上下文時遇到問題。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'。 確實,我已經在id = 0的「Composantes」中有一個對象。如果我刪除它,我至少可以創建一個ID = 0的對象。我不明白的是,當一個新的對象被添加到上下文中時,爲什麼不需要下一個可用的ID?這與我在嘗試在新的上下文中創建此對象之前發生的錯誤完全相同......這可能是因爲我的model.edmx中缺少參數?有沒有辦法強制新標識符歸屬於新創建的對象?
我連接到mysql數據庫使用實體框架模型使用Devart dot.connector連接到數據庫。 感謝你們所有人提前回答這個簡單的問題。
皮埃爾