C# 以简洁的方式插入多行
使用Dapper将多行插入SQL Server的最佳解决方案是什么? 当我有大约8k条记录时,我的数据库连接超时并失败 在最后阶段的应用程序中,我得到了一个表列表,其中每个表都有一个行列表 我要做的是在每个表上创建事务和foreatch,然后在每行和conn.CreateCommand上进行foreatch,填充参数和executeNonQuery。所以,如果我有9k条记录,我实际上是在做9k ExecuteOnQuery操作C# 以简洁的方式插入多行,c#,.net,ado.net,dapper,sqlconnection,C#,.net,Ado.net,Dapper,Sqlconnection,使用Dapper将多行插入SQL Server的最佳解决方案是什么? 当我有大约8k条记录时,我的数据库连接超时并失败 在最后阶段的应用程序中,我得到了一个表列表,其中每个表都有一个行列表 我要做的是在每个表上创建事务和foreatch,然后在每行和conn.CreateCommand上进行foreatch,填充参数和executeNonQuery。所以,如果我有9k条记录,我实际上是在做9k ExecuteOnQuery操作 我有更好的选择吗?同意DaniCE的观点,SqlBulkCopy是一
我有更好的选择吗?同意DaniCE的观点,SqlBulkCopy是一个不错的选择。最近我遇到过这样的情况,我用dapper处理了大部分数据,但数据量更大,在我的案例中有数百万条记录,dapper曾经不是我最好的朋友
private void BulkCopy(SqlConnection sqlConnection,string tableName, DataTable dataTable)
{
using (var bulkCopy = new SqlBulkCopy(sqlConnection))
{
bulkCopy.DestinationTableName = tableName;
bulkCopy.BatchSize = 50000;
bulkCopy.BulkCopyTimeout = 60; //seconds
bulkCopy.WriteToServer(dataTable);
}
}
最好的免费方式无疑是@JFM和@DaniCE建议的
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);
//配置和映射实体
DapperPlusManager.Entity()
.表格(“订单”)
.Identity(x=>x.ID);
//链和保存实体
连接.批量插入(订单)
.AlsoInsert(订单=>order.Items);
.Include(x=>x.ThenMerge(订单=>order.Invoice)
.AlsoMerge(发票=>invoice.Items))
.AlsoMerge(x=>x.ShippingAddress);
我将调查使用SqlBulkCopy和dapper。也许这个引用可以帮助您:,谢谢,从来没有听说过大容量插入和SqlBuklCopy类。在你发完帖子后,我对这个话题做了一些研究,这正是我需要的!!再次感谢!!connection.BulkInsert(models).AlsoBulkInsert(model=>model.SelectMany(c=>c.Variables));如果您注意到AlsoBulkInsert是一个列表,那么在您的示例中它不是。我是否缺少使用语句?