基于Dapper的github页面上的代码,我创建了一个bulk insert语句。
Dapper将查询拆分为多个单独的split语句(如SQL分析器中所示)。
是否可以指示它将多个操作转换为单个操作,以减少DB trips的数量,而不必手动创建以下多个insert语句?
insert into test (a,b) values (b,c);
insert into test (a,b) values (d,e);
insert into test (a,b) values (f,g);
发布于 2018-04-17 13:24:47
是否可以指示它将多个操作转换为单个操作?
不是
通常有两种方法可以执行大容量操作:
SqlBulkCopy
如@iSR5 5在注释部分中回答:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy
你找不到比这更快的东西了。
Dapper Plus
免责声明:我是项目Dapper Plus的所有者
此项目不是免费的,但提供所有批量操作:
(在引擎盖SqlBulkCopy
下使用)
还有一些更多的选项,比如输出身份值:
// CONFIGURE & MAP entity
DapperPlusManager.Entity<Order>()
.Table("Orders")
.Identity(x => x.ID);
// CHAIN & SAVE entity
connection.BulkInsert(orders)
.AlsoInsert(order => order.Items);
.Include(x => x.ThenMerge(order => order.Invoice)
.AlsoMerge(invoice => invoice.Items))
.AlsoMerge(x => x.ShippingAddress);
编辑:答案评论
不过,SqlBulkCopy只能与MS一起使用。难到不是么?
确切地说,SqlBulkCopy只与Server兼容。我们的库支持多个提供者:
https://stackoverflow.com/questions/49870698
复制相似问题