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

时间:2015-12-08 07:13:26

标签: c# asp.net-mvc linq asp.net-mvc-5

我想更新/编辑详细信息,然后逐行将这些详细信息保存到表中。因为我刚刚创建了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();
};

然后我收到了以下错误

  

属性&#39; Field_ID&#39;是对象关键信息的一部分   无法修改。

1 个答案:

答案 0 :(得分:3)

斯蒂芬·穆勒说:

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移到了循环之外。因为所有更改都会提交或不提交(如果您有错误)。