使用Dapper将多行插入SQL Server的最佳解决方案是什么? 当我有大约8k记录时,我的数据库连接超时并失败。
在我的应用程序的最后阶段,我可以说一个表列表,其中每个表都有行列表。
我所做的是在每个表上创建事务和预处理,然后在每一行上进行预处理并使用conn.CreateCommand,填充参数和executeNonQuery。因此,如果我获得9k记录,我实际上正在执行9k executeNonQuery操作。
对我来说有更好的选择吗?
答案 0 :(得分:2)
同意DaniCE,SqlBulkCopy是这里的方式。最近在那种情况下,我使用了小巧的数据工作,但是数据量更大,在我的情况下有数百万条记录,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);
}
}
答案 1 :(得分:0)
最好的免费方式毫无疑问是globals()
@JFM和@DANCE建议
免责声明:我是该项目的所有者Dapper Plus
此库非自由,但为以下操作提供了简单的支持:
通过使用映射并允许输出像标识列一样的值。
SqlBulkCopy