c# 将新对象添加到对象上下文返回 "error occurred while updating the entries",主键的重复条目

标签 c# mysql entity-framework object savechanges

我在尝试将对象添加到 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/

相关文章:

php - 搜索引擎的困境

c# - 存储库模式应该使用 ObjectSet<T> 还是 IDbSet<T> 作为基类?

mysql - 尽管指定了路径,但输出文件不在预期位置

c# - Entity Framework :Using Transaction Scope how to check whether DbContext has transaction?

entity-framework - EntityFramework4.1的 .Local().ToBindingList() ,那怎么过滤呢?

c# - 相同类型的无限方法参数

c# - 错误 : No Entity Framework provider found for the ADO. 具有不变名称 'System.Data.SqlClient' 的 NET 提供程序

c# - C# linq 和 ORACLE 对点顺序的不同解释

c# - 程序可以作为服务或表单运行——主线程应该是 MTA 还是 STA?

Python MySQL 如果变量不存在仍然提交