使用Dapper

时间:2017-11-02 15:29:17

标签: c# .net ado.net dapper sqlconnection

使用Dapper将多行插入SQL Server的最佳解决方案是什么? 当我有大约8k记录时,我的数据库连接超时并失败。

在我的应用程序的最后阶段,我可以说一个表列表,其中每个表都有行列表。

我所做的是在每个表上创建事务和预处理,然后在每一行上进行预处理并使用conn.CreateCommand,填充参数和executeNonQuery。因此,如果我获得9k记录,我实际上正在执行9k executeNonQuery操作。

对我来说有更好的选择吗?

2 个答案:

答案 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

此库非自由,但为以下操作提供了简单的支持:

  • BulkInsert
  • BulkUpdate
  • BulkDelete
  • BulkMerge
  • BulkSynchronize

通过使用映射并允许输出像标识列一样的值。

SqlBulkCopy