c#向对象上下文添加新对象将返回"更新条目时发生错误",重复主键条目

pie*_*rre 2 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();
Run Code Online (Sandbox Code Playgroud)

在SaveChanges()上,我收到一个UpdateException,说Key'PRIMARY'有一个重复的条目'0'.确实,我的"Composantes"中已有一个id为0的对象.如果我删除它,我至少可以创建一个ID = 0的对象.我不明白的是,当一个新对象被添加到上下文中时,为什么不采用下一个可用的ID?这与我尝试在新上下文中创建此对象之前发生的错误完全相同....这可能是因为我的model.edmx中缺少参数?有没有办法强制将新ID归因于新创建的对象?

我使用实体框架模型连接到mysql数据库,使用Devart dot.connector连接到数据库.提前感谢你们所有人回答这个简单的问题.

皮埃尔

pie*_*rre 6

我自己找到了解决方案.对于那些坚持这个愚蠢事情的人来说可能是有用的...这只是因为在数据库中我自己的ID字段没有设置为AUTOINCREMENT ...改变这一点并更新model.edmx解决了这个问题.抱歉打扰你这个!!!!!