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连接到数据库.提前感谢你们所有人回答这个简单的问题.
皮埃尔
我自己找到了解决方案.对于那些坚持这个愚蠢事情的人来说可能是有用的...这只是因为在数据库中我自己的ID字段没有设置为AUTOINCREMENT ...改变这一点并更新model.edmx解决了这个问题.抱歉打扰你这个!!!!!
| 归档时间: |
|
| 查看次数: |
2418 次 |
| 最近记录: |