实体框架核心和SQLBulkCopy

时间:2019-12-08 22:30:00

标签: c# sqlbulkcopy

我很久以来android:rotation="-90"与Entity Framework一起使用。我刚刚迁移到Entity Framework Core。在我做类似的事情之前:

SqlBulkCopy

var itemsDT = jobs.ToDataTable<ProfileJob>(); using (var connection = new SqlConnection(_connStr)) { connection.Open(); using (var bulkCopy = new SqlBulkCopy(connection)) { bulkCopy.BatchSize = 1000; bulkCopy.DestinationTableName = "dbo.JobRemoveUniquePermissionsFailed"; bulkCopy.WriteToServer(itemsDT); } } 是在旧实体框架上构建的大型扩展类。我还没有找到与core类似的任何样本。

有没有人有一个小的示例如何将ToDataTable用于EF Core?

1 个答案:

答案 0 :(得分:1)

我有一个涵盖此here的小代码示例。您只需将一个code file添加到项目中,即可使用.AsDataReader().ToDataTable()扩展方法。 EG:

    static int SendOrders(int totalToSend)
    {
      using (SqlConnection con = new SqlConnection(connectionString))
      {
        con.Open();
        using (SqlTransaction tran = con.BeginTransaction())
        {
          var newOrders =
                  from i in Enumerable.Range(0, totalToSend)
                  select new Order
                  {
                    customer_name = "Customer " + i % 100,
                    quantity = i % 9,
                    order_id = i,
                    order_entry_date = DateTime.Now
                  };
      SqlBulkCopy bc = new SqlBulkCopy(con,
        SqlBulkCopyOptions.CheckConstraints |
        SqlBulkCopyOptions.FireTriggers |
        SqlBulkCopyOptions.KeepNulls, tran);

      bc.BatchSize = 1000;
      bc.DestinationTableName = "order_queue";
      bc.WriteToServer(newOrders.AsDataReader()); 

      tran.Commit();
    }
    con.Close();

  }

  return totalToSend;

}