EF中重复操作同一个表的同一条数据时出错。

小辛、 2015-02-12 02:43:40
附加类型“penson”的实体失败,因为相同类型的其他实体已具有相同的主键值。在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时如果图形中的任何实体具有冲突键值,则可能会发生上述行为。这可能是因为某些实体是新的并且尚未接收数据库生成的键值。在此情况下,使用 "Add" 方法或者 "Added" 实体状态跟踪该图形,然后将非新实体的状态相应设置为 "Unchanged" 或 "Modified"。





context.Entry<Penson>(item).State = EntityState.Modified; //出错位置。
int result = context.SaveChanges();


请各位大神指点一下。 纠结了好半天了。

第一次更新数据没有问题。 但是第二次更新数据的时候就会出现上述错误。
...全文
653 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35625424 2016-07-17
  • 打赏
  • 举报
回复
兄台这个问题 你解决了吗
lincolnandlinda 2015-02-13
  • 打赏
  • 举报
回复
你设置Modified状态的item是哪里来的?从数据库中查询得到的还是自己new出来的? 如果是new出来的,写调用DbContext.Add方法, 这样会得到主键
莫名3 2015-02-13
  • 打赏
  • 举报
回复
你是不是 用new出来的一个对象 进行多次操作 才会出现这种问题的? 不然 按照道理 应该不会出现 你这种问题的
winnowc 2015-02-12
  • 打赏
  • 举报
回复
EF有缓存,或者叫做identity map模式,如果你这个item和它缓存的之前相同主键的对象不是一个,就会错的。一般都是因为多次操作一直在用同一个context导致的,正确的方式是一次操作一个context。
小辛、 2015-02-12
  • 打赏
  • 举报
回复
引用 1 楼 wyd1520 的回复:
未设主键造成的?看看表里有没有主键。
主键我是真的设置了。。。
本拉灯 2015-02-12
  • 打赏
  • 举报
回复
未设主键造成的?看看表里有没有主键。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧