使用 LINQ 查询向数据库 table 插入多行

inserting multiple lines to a database table using LINQ query

我正在尝试将所有第 i 个值插入到名为 AB_Product_vs_Field 的 table,但它只插入最后一个 i 个值

这是 LINQ 查询

for (int i = 0; i < product.ListProductFields.Count; i++)
{
   insertproductvalue.Product_ID = product.Product_ID;
   insertproductvalue.Field_ID = product.ListProductFields[i].ProductFieldID;
   insertproductvalue.Field_Value_EN = product.ListProductFields[i].Field_Value_EN;                         
};

db.AB_Product_vs_Field.Add(insertproductvalue);
db.SaveChanges();

如何逐行插入所有这些行

你只需要输入那一行:

db.AB_Product_vs_Field.Add(insertproductvalue);

在 for 中并保留 for 之外的保存。

我看不出你是如何创建你的 insertproductvalue 但我想你的代码应该是这样的:

var listInsertproductvalue = new List<AB_Product_vs_Field>(); //you creating list of your entities
for (int i = 0; i < product.ListProductFields.Count; i++)
{
   listInsertproductvalue.Add(new AB_Product_vs_Field 
   {
      Product_ID = product.Product_ID, 
      Field_Value_EN = product.ListProductFields[i].Field_Value_EN
   }); //here you create your entity and add it to List
};
db.AB_Product_vs_Field.AddRange(listInsertproductvalue); //here you add all new entities to context
db.SaveChanges();

在这里您创建空的 List 实体,填充它,然后使用 AddRange() 方法将列表添加到您的上下文中。

我在这里假设的东西很少,但它有一个非常简短和甜蜜的方式来做这件事。我有点盲目,因为我需要有关代码的更多信息,即变量声明

假设 product.ListProductFields 是您的某个对象的 List,其中包含要插入的所有行:

第一种方式:

product.ListProductFields.Foreach(objEach=>{
db.AB_Product_vs_Field.Add((objEach); /* First we can get, .productId, .FeildId etc inside the function*/
// OR 
// db.AB_Product_vs_Field.Add((objEach.Product_ID, objEach.ProductFieldID, objEach.Field_Value_EN;);

});
db.SaveChanges();

还有一种更简单的方法,那就是使用 List<<<insertproductvalue>>>,它是自定义 class 对象的列表,其中每个对象都将添加属性,并且该对象将被添加到您自定义 class 对象的列表,然后我们可以再次使用上面的代码将行插入到数据库中。

第二种方式:

var lstinsertproductvalue=new List<<*CLASSTYPE*>>();
for (int i = 0; i < product.ListProductFields.Count; i++)
            {
insertproductvalue=new <<*CLASSTYPE*>>();
                insertproductvalue.Product_ID = product.Product_ID;
                insertproductvalue.Field_ID = product.ListProductFields[i].ProductFieldID;
                insertproductvalue.Field_Value_EN = product.ListProductFields[i].Field_Value_EN;
lstinsertproductvalue.Add(insertproductvalue); 
// Here you have created a list your-self assuming that product.ListProductFields is not a list. 
            };

lstinsertproductvalue.Foreach(objEach=>{
db.AB_Product_vs_Field.Add((objEach); /* First we can get, .productId, .FeildId etc inside the function*/
// OR 
// db.AB_Product_vs_Field.Add((objEach.Product_ID, objEach.ProductFieldID, objEach.Field_Value_EN;);    
});
db.SaveChanges();