基于Dapper的github页面上的这段代码,我创建了一个批量插入语句。
Dapper将查询拆分为多个单独的SQL插入语句(如SQL分析器中所示)。
是否可以指示它将多个操作更改为单个操作以减少数据库跳转次数,而无需手动创建多个插入语句,如下所示?
insert into test (a,b) values (b,c);
insert into test (a,b) values (d,e);
insert into test (a,b) values (f,g);
答案 0 :(得分:1)
是否可以指示它将多个操作更改为单个操作
没有
通常有两个答案可以执行批量操作:
@ iSR5在评论部分回答:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy
你找不到比这更快的东西。
免责声明:我是该项目的所有者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 SQL Server一起使用。不是吗?
确切地说,SqlBulkCopy仅与SQL Server兼容。我们的图书馆支持多个提供商: