首页 文章

更新数据库时违反主键约束

提问于
浏览
-1

我尝试使用以下代码使用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 回答

  • 0

    答案在您的错误消息中 . 在更新数据时,您的表主键正在重复,它是222.检查您的表并维护您的功能以避免在主键字段中使用相同的值 . PRIMARY KEY必须是唯一的 .

  • 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;
        }
    

相关问题