实体框架更新语句导致错误

时间:2013-04-06 05:47:46

标签: c# entity-framework

 public bool UpdateValues(String impR, String actR, String proR, String impV, String magV)
 {
        bool IsInserted = false;

        try
        {
            MatrixValues c = cecbContext.MatrixValues.First(i => i.actv_reference == actR); // primary key
            c = cecbContext.MatrixValues.First(i => i.impt_reference == impR); // primary key
            c = cecbContext.MatrixValues.First(i => i.proj_reference == proR); // primary key

            c.mtrxV_importance = double.Parse(impV); // updated value
            c.mtrxV_magnitude = double.Parse(magV);  // updated value

            cecbContext.SaveChanges();  // getting an error here!!!

            IsInserted = true;
        }
        catch (Exception)
        {
            IsInserted = false;
        }

        return IsInserted;
    }

我在尝试更新详细信息时遇到错误

错误是

  

违反PRIMARY KEY约束'PK_MatrixValues'。无法在对象'dbo.MatrixValues'中插入重复键。

2 个答案:

答案 0 :(得分:1)

您要多次设置对象c;如果最后一个陈述就足够了;然后不要使用以前的;如果要使用多个标准选择c对象,则需要更改以下行;

MatrixValues c = cecbContext.MatrixValues.First(i => i.actv_reference == actR); // primary key
  c = cecbContext.MatrixValues.First(i => i.impt_reference == impR); // primary key
  c = cecbContext.MatrixValues.First(i => i.proj_reference == proR); // primary key

为:

MatrixValues c = cecbContext.MatrixValues.First(i => i.actv_reference == actR && c.impt_reference == impR && c.proj_reference == proR); 

答案 1 :(得分:0)

  

违反PRIMARY KEY约束'PK_MatrixValues'。无法在对象'dbo.MatrixValues'

中插入重复键

这意味着该字段包含主键。它不允许重复条目