0

我试图更新我的表Bareme,但我得到关于我的唯一密钥(Categorie , Section)的例外情况,但如此处所示,如果对象确实存在,则仅更新我的工资,并且我已通过“ DEBUG”,没有任何插入的对象都是复制实体框架不保存

内部异常说:

唯一键约束违反‘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); 
     } 
+0

当你做你的AddObhject()的所有行都会有相同的ID BRM 。这可以吗 ??? – GameAlchemist 2012-08-04 23:10:14

+0

即使我更新了我的代码,但它不起作用即使我添加@SatDisk的SaveOptions.DetectChangesBeforeSave' – S3ddi9 2012-08-04 23:23:27

回答

2

请使用SaveChanges MethodSaveOptionsDetectChangesBeforeSave

db.Entities.SaveChanges(SaveOptions.DetectChangesBeforeSave); 
+0

对不起,没有工作 – S3ddi9 2012-08-04 23:23:55

+0

@SéddikLaraba你得到了什么异常 – HatSoft 2012-08-04 23:24:27

+0

'更新实体时发生错误,请参阅内部异常的更多细节内部异常写在问题 – S3ddi9 2012-08-04 23:26:34