c#,EF: bulkinset相关对象

本文关键字:对象 bulkinset EF | 更新日期: 2023-09-27 18:05:41

我目前正在玩EntityFramework.BulkInsert

虽然它确实有助于简单插入的性能(16秒与1,000.000行),我找不到任何关于插入对象映射到多个表的信息。唯一与此相关的是官方网站2014年的老话题,说这是不可能的。这是真的吗?

如果是,有什么好的解决办法吗?

c#,EF: bulkinset相关对象

EntityFramework。BulkInsert是一个非常好的库,它支持简单的场景。然而,该库是有限的,不再支持。

到目前为止,只有一个好的解决方法,那就是使用一个支持一切的库!

免责声明:我是项目实体框架扩展的所有者

此库支持所有功能,包括所有关联和继承。

例如,要在不同的表中保存多个实体,您可以使用BulkSaveChanges,它的工作原理与SaveChanges完全相同,但速度更快!
// Easy to use
context.BulkSaveChanges();
// Easy to customize
context.BulkSaveChanges(bulk => bulk.BatchSize = 100);

标准库也不仅仅做插入操作。它支持所有的批量操作:

  • BulkInsert
  • BulkUpdate
  • BulkDelete
  • BulkMerge

但是不像EntityFramework。BulkInsert,这个库不是空闲的

EDIT:回答子问题

你说得更快——你有任何指标或指标链接吗

@Mark:你可以在我们的网站主页上查看指标。我们报告BulkSaveChanges至少比SaveChanges快15倍。

然而,度量标准存在严重偏差。太多的东西可能会影响它,如索引,触发,延迟等!

人们通常报告我们的表现提高了25倍,50倍,80倍!

在执行基准测试时,人们通常会忘记的一件事是在JIT编译测试之前调用我们的库一次!与实体框架一样,对库的第一次访问可能需要几个毫秒。

如果我有批量插入问题,我不会使用EF。EF意味着在应用程序的正常用例中映射代表实体的对象,其中任何给定的事务应该只真正接触一个实体(假设您的实体是围绕合理的一致性边界设计的)。

如果我要移动大量的数据(导入/导出/转换等),那么我会更直接地使用SQL,在那里我有更多的控制。