使用c#中的for循环逐行更新表

本文关键字:逐行 更新 循环 for 中的 使用 | 更新日期: 2023-09-27 18:26:01

我想更新/编辑详细信息,然后逐行将这些详细信息保存到表中。为此,我刚刚创建了以下Linq查询

AB_Product_vs_Field insertproductvalue = new AB_Product_vs_Field();
for (int i = 0; i < product.ListProductFields.Count; i++)
{
   insertproductvalue.Product_ID = product.Product_ID;
   insertproductvalue.Field_ID = product.ListProductFields[i].Field_ID;
   insertproductvalue.Field_Value_EN = product.ListProductFields[i].Field_Value_EN;
   insertproductvalue.Field_Value_AR = product.ListProductFields[i].Field_Value_AR;
   db.Entry(insertproductvalue).State = System.Data.Entity.EntityState.Modified;
   db.SaveChanges();
};

但是我得到了以下错误

属性"Field_ID"是对象密钥信息的一部分,并且无法修改。

使用c#中的for循环逐行更新表

正如Stephen Muecle所说:

for (int i = 0; i < product.ListProductFields.Count; i++)
{
   AB_Product_vs_Field insertproductvalue = new AB_Product_vs_Field();
   insertproductvalue.Product_ID = product.Product_ID;
   insertproductvalue.Field_ID = product.ListProductFields[i].Field_ID;
   insertproductvalue.Field_Value_EN = product.ListProductFields[i].Field_Value_EN;
   insertproductvalue.Field_Value_AR = product.ListProductFields[i].Field_Value_AR;
   db.Entry(insertproductvalue).State = System.Data.Entity.EntityState.Modified;
};
db.SaveChanges();

您还应该注意到,我将SaveChanges移动到循环之外。最好是所有更改都会同时提交或不提交(如果您有错误)。