实体框架v6.1中的批量插入

时间:2016-09-28 10:36:31

标签: c# entity-framework-6 asp.net-mvc-5.1

我们的医疗保健应用程序遵循(AngularjS + MVC + WebAPI)3层架构。我在导入屏幕上上传Excel表格进行列映射。之后,我为excel表中的每个记录执行所有验证。之后所有这些50K行作为Web-API层的实体。这里我将一个rec插入到父表中以获取主键。获得它后循环通过50k实体来更新它在集合中。然后我使用addRange将所有这些值更新到数据库中。这是我们在应用程序中使用的一段代码。

            db.tableA.Add(Entity1);

            db.SaveChanges();

            (Primary Key) fileId = int.Parse(Entity1.Id.ToString());


//DataList having 50K Entities
            foreach (tableB coll in DataList)

            {

                coll.fileID = fileId;                    

            }

            db.tableB.AddRange(DataList);

            db.SaveChanges();

参见下面的链接。 Bulk insert in entity framework

How to use Bulk Insert in Entity Framework using Object Context?

Bulk insert in entity framework

但我无法使用EntityFramework.BulkInsert,因为它与最新的EF版本(6.1)不兼容。有没有其他可行的方法使用EF使用批量插入?我们也可以在Entity Framework中使用SqlBulkCopy吗?`

1 个答案:

答案 0 :(得分:1)

以下是使用其他第三方库(与Entity Framework 6.1兼容)的替代解决方案

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

此库与所有Entity Framework Version 6.X

兼容

通过允许您的应用程序可能需要执行所有批量操作,它不仅仅是批量插入:

  • BulkSaveChanges
  • BulkInsert
  • BulkUpdate
  • BulkDelete
  • BulkMerge

实施例

// Easy to use
context.BulkSaveChanges();

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

该库支持所有类型的继承和关联,但是库不是免费的。

相关问题