如何在一次点击中从Entity Framework向数据库中插入200行

时间:2017-04-26 12:32:50

标签: asp.net-mvc performance entity-framework stored-procedures

在我使用EF 6.0的MVC 5应用程序中,我想在一次点击中使用Entity Framework将200多条Product记录插入到数据库中。 [1]一种方法是将记录列表转换为XML并传递给存储过程。 [2]如果我使用DbContext.Add(),则会为每条记录触发(在内部创建插入脚本)。 [3]如果我遍历产品列表并将每条记录传递给存储过程,我认为这也不好。

这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:0)

免责声明:我是该项目的所有者Entity Framework Extensions

(此库不是免费的)

通过允许您一次保存多个实体,此库可以提高您的代码效率。支持所有批量操作:

  • BulkSaveChanges
  • BulkInsert
  • BulkUpdate
  • BulkDelete
  • BulkMerge
  • BulkSynchronize

示例:

// Easy to use
context.BulkSaveChanges();

// Easy to customize
context.BulkSaveChanges(bulk => bulk.BatchSize = 100);

// Perform Bulk Operations
context.BulkDelete(customers);
context.BulkInsert(customers);
context.BulkUpdate(customers);

// Customize Primary Key
context.BulkMerge(customers, operation => {
   operation.ColumnPrimaryKeyExpression = 
        customer => customer.Code;
});

答案 1 :(得分:0)

我有几个高效的Web应用程序使用EntityFramework.BulkInsert库和this NuGet package。它工作正常,但不再维护,因此更好的解决方案是使用更新版本EntityFramework.BulkInsert-ef6-ext

使用起来非常简单:

context.BulkInsert(yourListOfModels);

并生成BULK INSERT个Sql命令,其运行速度比传统的Enrity Framework个人INSERT快得多。

答案 2 :(得分:0)

我不确定这个问题How to pass a table-value parameter是否适合你,但它正是我用来将数据加载到SQL 2014数据库中的原因。非常好,已经工作了4年多。