1. ホーム
  2. c#

SqlBulkCopy Identity カラムを使用した挿入

2023-11-29 03:24:14

質問

私は SqlBulkCopy オブジェクトを使用して、生成された数百万行をデータベースに挿入しています。唯一の問題は、挿入先のテーブルが ID カラムを持っていることです。私は SqlBulkCopyOptionsSqlBulkCopyOptions.KeepIdentity に変更し、ID カラムを 0 's, DbNull.Valuenull . どれもうまくいきません。私は何かとても単純なことを見逃しているような気がします。もし誰かが私に教えてくれるなら、それは素晴らしいことです。ありがとうございます。

編集 明確にするために、私はIDの値が設定されていない 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);
}

どのように解決するのですか?

宛先テーブルにIDを付与させる。 は使用しないでください。 を使います。 SqlBulkCopyOptions.KeepIdentity オプションは使わないでください。代わりに を使わないで はソースから ID をマップし を使わないでください。 に送るために、ソースからそれを抽出します。 SqlBulkCopy .