我尝试使用以下代码使用Linq-to-SQL更新数据库:
public Air_Score Update(Air_Score myApp)
{
Air_Score c = null;
if (myApp != null)
{
c = e.Air_Score.FirstOrDefault(a => a.ID == myApp.ID);
if (c != null)
{
c.Score = myApp.Score;
}
e.SaveChanges();
}
return c;
}
当我调用这个函数时,我得到了这个异常
违反PRIMARY KEY约束'PK_Air_Score' . 无法在对象'dbo.Air_Score'中插入重复键 . 重复键值是(222) .
代码中的错误是什么?
2 回答
答案在您的错误消息中 . 在更新数据时,您的表主键正在重复,它是222.检查您的表并维护您的功能以避免在主键字段中使用相同的值 . PRIMARY KEY必须是唯一的 .
我认为问题在于您正在创建新的Air_Score并复制现有的Air_Score并尝试保存上下文 . 因此,实体框架将其视为插入而非更新 . 尝试删除Air Score变量的初始声明,如下所示