我在尝试将对象添加到 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() 上,我收到一个 UpdateException,表示键“PRIMARY”有重复条目“0”。 确实,我的“Composantes”中已经有一个 id=0 的对象。如果我删除它,我至少可以创建一个ID=0的对象。我不明白的是,当一个新对象添加到上下文中时,为什么它不采用下一个可用的 ID???这与我尝试在新上下文中创建此对象之前发生的错误完全相同......这可能是因为我的 model.edmx 中缺少参数?有没有办法强制将新 id 归因于新创建的对象?
我正在使用 Entity Framework 模型连接到 mysql 数据库,并使用 Devart dot.connector 连接到数据库。 预先感谢大家对这个简单问题的答复。
皮埃尔
最佳答案
我自己找到了解决方案。对于陷入这种愚蠢事情的人来说可能很有用...... 这只是因为在数据库本身中,ID 字段没有设置为 AUTOINCRMENT... 更改此设置并更新 model.edmx 解决了问题。 抱歉打扰您了!!!!
关于c# 将新对象添加到对象上下文返回 "error occurred while updating the entries",主键的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1193881/