我目前在玩EntityFramework.BulkInsert
。C#&EF:bulkinsert相关对象
虽然它确实有助于简化插入操作(具有1.000.000行的16秒),但我找不到任何有关插入映射到多个表的映射对象的信息。与此相关的唯一事情是官方网站的旧版(2014年)话题,指出这是不可能的。这仍然是实际的吗?
如果是这样的话:有没有什么好的解决方法?
我目前在玩EntityFramework.BulkInsert
。C#&EF:bulkinsert相关对象
虽然它确实有助于简化插入操作(具有1.000.000行的16秒),但我找不到任何有关插入映射到多个表的映射对象的信息。与此相关的唯一事情是官方网站的旧版(2014年)话题,指出这是不可能的。这仍然是实际的吗?
如果是这样的话:有没有什么好的解决方法?
EntityFramework.BulkInsert是一个非常好的库,它支持简单的场景。但是,图书馆是有限的,不再支持。
到目前为止,只有一个很好的解决方法,它使用一个支持一切的库!
免责声明:我的项目Entity Framework Extensions
该库支持的一切,包括所有关联和继承的所有者。
例如,为了将多个实体保存在不同的表格中,您可以使用BulkSaveChanges,它们的工作方式与SaveChanges完全相同,但速度更快!
// Easy to use
context.BulkSaveChanges();
// Easy to customize
context.BulkSaveChanges(bulk => bulk.BatchSize = 100);
该库也做不止插入。它支持所有的批量操作:
但是不像EntityFramework.BulkInsert,该库是不是免费的。
编辑:答案subquestion
你说的方法快 - 你有任何的指标或指标
@马克的链接:你可以看一下指标在我们的网站homepage。我们报告BulkSaveChanges至少比SaveChanges快15倍。
但是,度量标准存在很大偏差。太多的东西可能会影响它,如索引,触发器,延迟等!
人们通常会将我们的表现提升25倍,50倍,80倍!
在执行基准测试时,人们通常会忘记的一件事是在测试JIT编译之前调用我们的库一次!像实体框架一样,图书馆的第一次访问可能需要几ms。
你说*方式更快* - 你有任何指标或指标的链接?只是好奇 –
如果我有一个批量插入问题,我不会使用EF。 EF旨在在应用程序的正常使用情况下映射表示实体的对象,其中任何给定的事务只应触及一个实体(假设您的实体是围绕明智的一致性边界进行设计的)。
如果我移动大量数据(导入/导出/转换等),那么我会更直接地使用SQL,在那里我有更多的控制。
不幸的是....是的。一个alternatve将是批量插入扩展,并在同一事务中手动更新所有内容。 – ESG