很抱歉,但是我没有通过阅读像我这样的其他情况来解决我的问题。
我有一个包含long的数组,我应该将其插入到一个数据库中,该数据库只有两个字段:OGRN - bigint
,数据字段,Id - int
,标识字段。我正在创建一个像这样的DataTable
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);
}
那为什么不起作用?我错过了一些重要的事情。
答案 0 :(得分:7)
Add the new row to the Table!当您致电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();