ID列を使用したSqlBulkCopy挿入

c# identity-insert sqlbulkcopy sql-server

質問

私はSqlBulkCopyオブジェクトを使用して、数百万個の生成された行をデータベースに挿入しています。唯一の問題は、挿入するテーブルにID列があることです。 SqlBulkCopyOptionsSqlBulkCopyOptions.KeepIdentityに設定し、ID列を0DbNull.Valueおよびnull設定しようとしました。いずれも機能していません。誰かが私を啓発することができれば、私はとてもシンプルなものを見逃しているような気がする。ありがとう!

編集明確にするために、私はインポートしているDataTableにID値を設定していません。私はそれらを輸入の一部として生成したい。

編集2ここでは、ベースSqlBulkCopyオブジェクトの作成に使用するコードを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);
}

受け入れられた回答

宛先テーブルにIDを割り当てるには、 SqlBulkCopyOptions.KeepIdentityオプションを使用しないでください。代わりに、ソースからIDをマップしないで、ソースから抽出してSqlBulkCopyに送信しないでSqlBulkCopy


人気のある回答

フィルColumnMappingBulkCopyオブジェクトをし、ID列をマップしません。 ID列は、ターゲット・データベースによって生成されます。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ