[英]Inconsistent Object State Error In Entity Framework When Saving
我有以下代码来模拟一个主人,把他的狗卖给别人,然后给它起一个新的名字:
public void ChangeOwner(int oldOwnerID, int newOwnerID, int dogID, string newDogName)
{
var oldOwner = _objectContext.People.FirstOrDefault(x => x.ID == oldOwnerID);
oldOwner.DogID = null;
var newOwner = _objectContext.People.FirstOrDefault(x => x.ID == newOwnerID);
newOwner.DogID = dogID;
var dog = _objectContext.Dogs.FirstOrDefault(x => x.ID == dogID);
dog.Name = newDogName;
_objectContext.SaveChanges();
}
此代码将引发以下错误:
附加信息:对数据库的更改已成功提交,但是更新对象上下文时发生错误。 ObjectContext可能处于不一致状态。 内部异常消息:AcceptChanges无法继续,因为对象的键值与ObjectStateManager中的另一个对象冲突。 在调用AcceptChanges之前,请确保键值是唯一的。
为什么会发生此错误,我该如何解决?
您能否查看表定义/创建并查看是否添加或分配了主键并将(Is Identity)属性设置为yes
如果之后出现错误,请删除该实体并重新创建它,这应该可以解决问题,但这听起来像是主键问题。
我本人就遇到了这个问题,上面的答案说的是“ PRIMARY KEY”问题是正确的,但是对于ASP.NET MVC来说,它是我的新手,我不知道该如何实施该解决方案。
因此,对于像我这样的ASP.NET MVC n00b谁想要看一些代码以及什么对我有用:
我的问题是我的MODEL中的KEY与SQL TABLE中的KEY不匹配。
例如。 我的主键位于表中的“ Event_Question_ID”上。 但是在我的MODEL中,它位于另一个字段EventID。
我所要做的就是将密钥移至我的模型中的正确字段
模型:
[Key]
public int Event_Question_ID { get; set; }
注意: [Key]
需要using System.ComponentModel.DataAnnotations;
我希望这可以帮助某个人!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.