实体框架不保存

时间:2012-08-04 23:04:40

标签: c# linq entity-framework entity-framework-4 linq-to-entities

我正在尝试更新我的表Bareme,但我得到了一个关于我的唯一键(Categorie , Section)的例外,但是如果对象确实存在,我在这里只更新我的工资,并且我已经验证了通过“DEBUG”,没有任何插入的对象重复

内部例外说:

  

违反UNIQUE KEY约束'IX_Bareme'。无法在对象'dbo.Bareme'中插入重复键。\ r \ n语句已经存在   终止。

代码:

for (int i = 1; i <= sl_cat.Value; i++)
            for (int j = 1; j <= sl_sec.Value; j++)
            {

                Bareme brm = db.Entities.Baremes.Select(X => X).Where(X => X.Section == j && X.Categorie == i).FirstOrDefault();
                if (brm != null)
                    db.Entities.Baremes.DeleteObject(brm);

                brm = new Bareme();
                brm.Categorie = i;
                brm.Section = j;
                brm.Salaire = dt.Rows[j - 1][i.ToString()].ToString().ToDecimal();
                db.Entities.Baremes.AddObject(brm);
            }

        try
        {
            db.Entities.SaveChanges();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

1 个答案:

答案 0 :(得分:2)

请使用SaveChanges Method SaveOptions DetectChangesBeforeSave

示例

db.Entities.SaveChanges(SaveOptions.DetectChangesBeforeSave);