查看我的代码如何在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如何插入多个数据?它是一次性将多个数据插入数据库还是在内部逐个添加数据?
上面的代码是否可以视为批量插入或批量插入完全不同?
我看到人们使用许多不同的扩展来使用EF进行批量插入。这里有一个链接https://stackoverflow.com/a/43979807/6188148
所以我在这篇文章中有两个问题。请详细回答两个问题。
1)EF如何在数据库中插入多个数据.....一次性或不同的事情发生在幕后?
2)我在表格中插入多个数据的方式....是否会考虑批量插入或批量插入是不同的?
感谢
答案 0 :(得分:0)
免责声明:我是该项目的所有者Entity Framework Extensions
EF如何在数据库中插入多个数据.....一次性或不同的事情发生在幕后?
EF为您插入的每个实体执行数据库往返。
因此,如果您插入5000个实体,将执行5000次数据库往返。
无论使用多少实体,它始终使用相同的策略。
我在表格中插入多个数据的方式......是否会被考虑 批量插入或批量插入是不同的?
批量插入库完全不同。他们阅读模型并使用引擎盖下的SqlBulkCopy来执行批量插入。
您的代码将为每个实体进行数据库往返,当涉及数千个实体时,这些实体的速度很慢。
我应该使用AddRange而不是Add吗?
是的,在添加多个实体时,AddRange只会检测一次更改,从而显着提高在上下文中添加实体的性能。