SqlBulkCopy.WriteToServer 不起作用

本文关键字:不起作用 WriteToServer SqlBulkCopy | 更新日期: 2023-09-27 18:30:55

很抱歉问,但我还没有像我一样通过阅读另一种情况来解决我的问题。

有一个带有长整型的数组,我应该将其插入到一个数据库中,该数据库只有 2 个字段:OGRN - bigint、数据字段、Id - int、身份字段。我正在创建一个这样的数据表

        private static DataTable CreateDataTable()
    {
        var result = new DataTable();
        var ogrn = new DataColumn("Ogrn") {DataType = typeof (long), ColumnName = "Ogrn"};
        result.Columns.Add(ogrn);
        var id = new DataColumn("Id") { DataType = typeof(int), ColumnName = "Id", AutoIncrement = true };
        result.Columns.Add(id);
        result.PrimaryKey = new[] { id };
        return result;
    }

在我这样做之后:

            var dt = CreateDataTable();
            foreach (long ogrn in ogrns)
            {
                var row = dt.NewRow();
                row["Ogrn"] = ogrn;
                dt.AcceptChanges();
            }
            using (var sqlBulkCopy = new SqlBulkCopy(ConnectionString))
            {
                sqlBulkCopy.DestinationTableName = "dbo.ULs";
                sqlBulkCopy.ColumnMappings.Add("Ogrn", "Ogrn");
                sqlBulkCopy.ColumnMappings.Add("Id", "Id");
                sqlBulkCopy.WriteToServer(dt);
            }

那么为什么它不起作用呢?我错过了什么重要的东西。

SqlBulkCopy.WriteToServer 不起作用

将新行添加到表中!。这不是当你打电话给NewRow();时自动完成的事情

            var dt = CreateDataTable();
            foreach (long ogrn in ogrns)
            {
                var row = dt.NewRow();
                row["Ogrn"] = ogrn.Ogrn;
                dt.Rows.Add(row); // ADD the new row to the table!
            }
            dt.AcceptChanges();