我正在使用该SqlBulkCopy对象将几百万个生成的行插入数据库中。唯一的问题是我要插入的表具有一个标识列。我尝试将设置为SqlBulkCopyOptions,SqlBulkCopyOptions.KeepIdentity并将标识列设置为0的DbNull.Value和null。没有一个有效。我觉得如果有人能启发我,我会错过一些非常简单的事情,那就太好了。谢谢!
SqlBulkCopy
SqlBulkCopyOptions
SqlBulkCopyOptions.KeepIdentity
0
DbNull.Value
null
编辑 为了澄清起见,我没有在DataTable导入中设置的标识值。我希望将它们作为导入的一部分生成。
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); }
要让目标表分配标识,请不要使用该SqlBulkCopyOptions.KeepIdentity选项。相反,请勿从源映射身份,也不要从源提取身份以发送给SqlBulkCopy。