我有很多行(300k +)可以在最短的时间内插入SQL Server数据库,所以这个想法是使用并行化和分区数据,并使用异步将数据泵入SQL,X线程。时间,每个上下文100行,上下文被回收以最大程度地减少跟踪开销。但是,这意味着要并行使用多个连接,因此CommittableTransaction
/ TransactionScope
将使用分布式事务,这将导致并行事务征募操作返回臭名昭著的"This platform does not support distributed transactions."
异常。
我确实需要能够提交/回滚整个upsert。在批处理上传过程中,它的一部分以及任何错误都应根据应用程序回滚到先前工作/稳定条件的更改。
我有什么选择?缺少一个连接且没有并行化吗?
不。完全错误的方法。请勿为此使用EF-批量插入ETL并不是对象关系映射器的目标,并且许多设计决策对此都不起作用。您也不会用小汽车代替卡车来运输20吨的货物。