我有以下代码来模拟卖给别人的狗主人和狗得到一个新名字:
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之前,请确保键值是唯一的。
为什么会出现此错误,我该怎么做才能修复它?
答案 0 :(得分:4)
您可以查看表定义/创建并查看是否添加或分配了主键并将(Is Identity)属性设置为是
如果你之后得到一个错误...删除实体并重新创建它,这应该解决问题,但这听起来像一个主要的关键问题..
答案 1 :(得分:1)
我自己已经遇到了这个问题,上面的答案恰恰是说它是一个主要的关键问题,但作为ASP.NET MVC的新手,我并不知道如何实现解决方案。
那么,对于像我这样的ASP.NET MVC n00bs,我希望看到一些代码以及对我有用的东西:
我的问题是我的MODEL中的KEY与SQL TABLE中的KEY不匹配。
EG。我的PRIMARY KEY在我的表中的'Event_Question_ID'上。但在我的模型中,它位于不同的领域,即EventID。
我所要做的就是将KEY移动到我的MODEL
中的正确字段型号:
[Key]
public int Event_Question_ID { get; set; }
注意:[Key]
需要using System.ComponentModel.DataAnnotations;
我希望这有助于那里的人!