在我使用EF 6.0的MVC 5应用程序中,我想在一次点击中使用Entity Framework将200多条Product记录插入到数据库中。 [1]一种方法是将记录列表转换为XML并传递给存储过程。 [2]如果我使用DbContext.Add(),则会为每条记录触发(在内部创建插入脚本)。 [3]如果我遍历产品列表并将每条记录传递给存储过程,我认为这也不好。
这样做的最佳方式是什么?
答案 0 :(得分:0)
免责声明:我是该项目的所有者Entity Framework Extensions
(此库不是免费的)
通过允许您一次保存多个实体,此库可以提高您的代码效率。支持所有批量操作:
示例:
// 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年多。