实体框架 - 为每个循环保存数据到SQL服务器

san*_*ewa 3 c# entity-framework-6

我正在用c#.net实体框架和sql server 2008r2开发应用程序.这是我的代码

C#.net代码

foreach (var tempProduct in purchaseDetailTemp)
{
    invPurchase = new InvPurchaseDetailTemp();
    invPurchase.ProductID = tempProduct.InvProductMasterID;
    invPurchase.ProductCode = tempProduct.ProductCode;
    invPurchase.ProductName = tempProduct.ProductName;
    context.InvPurchaseDetails.Add(invPurchase);
    context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

purchaseDetailTemp是我的数据表.我想在没有foreach循环的情况下保存数据.我正在尝试使用mergeSql批量插入.有没有办法做到这一点?

Sea*_*kit 6

将saveChange移出循环.

为了使它更快......你可以在上下文实体上使用AddRange选项,这减少了实体模型检查.

for循环只是将其转换为正确的实体类型.如果它已经是正确的类型,则可以跳过循环

见下文..

List<InvPurchaseDetail>  invPurchaselist = new List<InvPurchaseDetail>();
foreach (var item in purchaseDetailTemp)
{
    var newItem= new InvPurchaseDetail();
    newItem.ProductID = item.InvProductMasterID;
    newItem.ProductCode = item.ProductCode;
    newItem.ProductName = item.ProductName;

    invPurchaselist.add(newItem)
}
context.InvPurchaseDetails.AddRange(invPurchaselist);
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)