问题描述
附加类型“penson”的实体失败,因为相同类型的其他实体已具有相同的主键值。在使用"Attach"方法或者将实体的状态设置为"Unchanged"或"Modified"时如果图形中的任何实体具有冲突键值,则可能会发生上述行为。这可能是因为某些实体是新的并且尚未接收数据库生成的键值。在此情况下,使用"Add"方法或者"Added"实体状态跟踪该图形,然后将非新实体的状态相应设置为"Unchanged"或"Modified"。context.Entry<Penson>(item).State=EntityState.Modified;//出错位置。intresult=context.SaveChanges();
请各位大神指点一下。纠结了好半天了。第一次更新数据没有问题。但是第二次更新数据的时候就会出现上述错误。
解决方案
解决方案二:
未设主键造成的?看看表里有没有主键。
解决方案三:
引用1楼wyd1520的回复:
未设主键造成的?看看表里有没有主键。
主键我是真的设置了。。。
解决方案四:
EF有缓存,或者叫做identitymap模式,如果你这个item和它缓存的之前相同主键的对象不是一个,就会错的。一般都是因为多次操作一直在用同一个context导致的,正确的方式是一次操作一个context。
解决方案五:
你设置Modified状态的item是哪里来的?从数据库中查询得到的还是自己new出来的?如果是new出来的,写调用DbContext.Add方法,这样会得到主键
解决方案六:
你是不是用new出来的一个对象进行多次操作才会出现这种问题的?不然按照道理应该不会出现你这种问题的
时间: 2024-08-30 11:09:25