一尘不染

SqlBulkCopy插入带有标识列

c#

我正在使用该SqlBulkCopy对象将几百万个生成的行插入数据库中。唯一的问题是我要插入的表具有一个标识列。我尝试将设置为SqlBulkCopyOptionsSqlBulkCopyOptions.KeepIdentity并将标识列设置为0DbNull.Valuenull。没有一个有效。我觉得如果有人能启发我,我会错过一些非常简单的事情,那就太好了。谢谢!

编辑 为了澄清起见,我没有在DataTable导入中设置的标识值。我希望将它们作为导入的一部分生成。

编辑2 这是我用来创建基础SqlBulkCopy对象的代码。

SqlBulkCopy sbc = GetBulkCopy(SqlBulkCopyOptions.KeepIdentity);
sbc.DestinationTableName = LOOKUP_TABLE;

private static SqlBulkCopy GetBulkCopy(SqlBulkCopyOptions options = 
    SqlBulkCopyOptions.Default) 
{
    Configuration cfg = WebConfigurationManager.OpenWebConfiguration("/RSWifi");
    string connString =
    cfg.ConnectionStrings.ConnectionStrings["WifiData"].ConnectionString;
    return new SqlBulkCopy(connString, options);
}

阅读 301

收藏
2020-05-19

共1个答案

一尘不染

要让目标表分配标识,请不要使用该SqlBulkCopyOptions.KeepIdentity选项。相反,请勿从源映射身份,也不要从源提取身份以发送给SqlBulkCopy

2020-05-19