【问题标题】:EF6: Adding multiple data to db or bulk operationEF6:将多个数据添加到数据库或批量操作
【发布时间】:2017-07-03 19:26:02
【问题描述】:

查看我的代码如何在 db 中添加多个数据。

List<Employee> oEmp = new List<Employee>
{
    new Employee{Name="New employee2", Salary=5000},
    new Employee{Name="New employee3", Salary=6000},
    new Employee{Name="New employee4", Salary=7000}
};

using (var ctx = new TestEFContext())
{
    foreach (Employee emp in oEmp)
    {
        ctx.Employees.Add(emp);
    }
    ctx.SaveChanges();
}

只是想知道 EF6 如何插入多个数据?是一次性向db插入多条数据还是在内部一个一个地添加数据?

上面的代码可以认为是bulk insert还是bulk insert完全不同?

我看到人们使用许多不同的扩展来使用 EF 进行批量插入。这是一个链接https://stackoverflow.com/a/43979807/6188148

所以我在这篇文章中有两个问题。请详细回答两个问题。

1) EF 如何在 db 中插入多个数据.....一口气或在幕后发生不同的事情?

2) 我在表中插入多个数据的方式....是否会考虑批量插入或批量插入是不同的?

谢谢

【问题讨论】:

    标签: entity-framework-6


    【解决方案1】:

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

    EF 如何在 db 中插入多个数据.....一口气或在幕后发生不同的事情?

    EF 为您插入的每个实体执行一次数据库往返。

    因此,如果您插入 5000 个实体,将执行 5000 次数据库往返。

    无论使用多少实体,总是使用相同的策略。

    我在表中插入多个数据的方式....是否会考虑 大容量插入还是大容量插入不同?

    批量插入库完全不同。他们读取模型并在后台使用 SqlBulkCopy 执行批量插入。

    您的代码将为每个实体进行数据库往返,当涉及数千个实体时,这非常慢。

    我应该使用 AddRange 而不是 Add?

    是的,当添加多个实体时,AddRange 只会检测一次更改,从而显着提高在上下文中添加实体的性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      相关资源
      最近更新 更多