使用 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();
我正在尝试将所有第 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();