实体框架多行插入问题

时间:2018-12-09 10:38:43

标签: entity-framework

我必须添加过程CV文件,然后使用EF将数据库中的多个对象添加到数据中

using (var db = new dbEntities())
{
    //Process CSV file

     foreach (AIRQ aqs in listairq)
          try
            {
              AIRQ aqs1 = new AIRQ();
              aqs1.FeatureID = aqs.FeatureID.Trim();
              aqs1.MeasurementDateTime = aqs.MeasurementDateTime;
              aqs1.ParameterID = aqs.ParameterID.Trim();
              aqs1.ParameterValue = aqs.ParameterValue;
              aqs1.Remarks = aqs.Remarks;
              db.AIRQTS.Add(aqs1);
              db.SaveChanges();

            }
              catch (Exception ex)
               {

                }
}

但是我发现虽然对象 aqs1 具有不同的值,但是在调用 db.SaveChanges(); 时却抛出错误主键冲突。我看到sql配置文件的值与对象不同

1 个答案:

答案 0 :(得分:0)

故障排除后,我发现数据库中是否存在一条引发错误的记录,该记录仍保留在收集列表中。因此,当循环再次运行时,然后在调用保存更改时,它将尝试再次插入先前的记录。

所以在我写的catch块中

 db.AIRQUALITYTS.Remove(aqs);
 db.SaveChanges();