我尝试使用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)。
代码中的错误是什么?
答案 0 :(得分:0)
答案在您的错误消息中。在更新数据时,您的表主键正在重复,它是222.检查您的表并维护您的功能以避免在主键字段中使用相同的值。 PRIMARY KEY必须是唯一的。
答案 1 :(得分:0)
我认为问题在于您正在创建新的Air_Score并复制现有的Air_Score并尝试保存上下文。因此,实体框架将其视为插入而非更新。尝试删除Air Score变量的初始声明,如下所示
public Air_Score Update(Air_Score myApp)
{
if (myApp != null)
{
var c = e.Air_Score.FirstOrDefault(a => a.ID == myApp.ID);
if (c != null)
{
c.Score = myApp.Score;
}
e.SaveChanges();
}
return c;
}