SqlSugar扩展SqlBulkCopy

作者 the7
发布于 2020年01月20日
评论 0
浏览 131

SqlSugar中没有SqlBulkCopy,随便扩展下,代码如下。

public static void SqlBulkCopy<T>(this SqlSugarClient client, List<T> list)
{
     var entityInfo = client.EntityMaintenance.GetEntityInfo<T>();
     var columns = entityInfo.Columns.Where(it => !it.IsIdentity).Select(it => it.DbColumnName).ToArray();
     var conn = client.Ado.Connection as SqlConnection;
     var tran = client.Ado.Transaction as SqlTransaction;
     using (var bcp = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran))
      {
            bcp.BatchSize = 50000;
            bcp.BulkCopyTimeout = 3600;
            using (var reader = ObjectReader.Create(list, columns))
            {
                 bcp.DestinationTableName = entityInfo.DbTableName;
                  bcp.WriteToServer(reader);
            }
      }
}

注意,此方法仅适用于SqlServer,同时需安装FastMember依赖

Install-Package FastMember -Version 1.5.0

4条评论

  • 念往昔丶繁华竞逐

    2019年5月20日

    最后一个五官很漂亮,虽然脸稍微大了一点点,但也算普通人里漂亮的
  • Eleven

    2019年5月20日

    念往昔丶繁华竞逐:
    最后一个五官很漂亮,虽然脸稍微大了一点点,但也算普通人里漂亮的...
    这帖子真的是精品。美中不足的是,为什么要用繁体,虽然能看懂,但有些麻烦呀。
  • SukiU

    2019年5月20日

    我曾在某外企互联网公司工作过一段时间,他们就是那种工作时间聊天摸鱼,下班时间拼命工作,然后加班蹭加班费和补贴😂
微信公众号
站长帮
微信公众号,每日更新!