ID関係を持つ2つのデータ型を一括して挿入する方法

c# datatable sqlbulkcopy sql-server

質問

私はこれを行う擬似コードでSQLBulkCopyを使用しています:

  • 新しいEmployeeデータテーブルを作成する
  • 新しいEmployeeAddressデータテーブルを作成する
  • 従業員テーブルに値を設定しますが、employeeIdはIDとして指定しないでください
  • EmployeeAddressデータテーブルに値を設定しますが、employeeIdフィールドが含まれています
  • これを2度実行してテーブル名を変更することで、両方のデータテーブルをデータベースに書き込む:

using (var bulk = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity & SqlBulkCopyOptions.KeepNulls))
    {
        bulk.BatchSize = 25;
        bulk.DestinationTableName = "Employee";
        bulk.WriteToServer(employeeDataTable);
    }       

2番目のデータテーブルにemployeeIdを指定すると、最初に挿入された従業員に正しくアライメントされます。私がデータを読む方法は、私が従業員と住所を一緒に読んでいるので、すべての従業員を挿入して戻ってすべての住所を挿入するのはちょっと苦しいです。

私はエレガントなソリューションがあるかどうか疑問に思っていましたか?

受け入れられた回答

私はあまりにもエレガントなこれが、私はあなたが決定するためだと思うかどうかはあまり確かではない。私はあなたが従業員のデータでユニークな一意のフィールドまたはフィールドの組み合わせを持っていると仮定しています。

サーバー上にステージングテーブルを作成する場合は、すべての従業員データと従業員アドレス情報を含むデータを一括挿入することができます。

ステージング表から、従業員データを挿入します。その後、ステージングテーブルから従業員テーブルに参加し(新しく割り当てられたIDを取得するため)、従業員アドレスデータを挿入します。

最後にステージングテーブルをドロップします。

すべてがまだ設定されているので、良いパフォーマンスが必要です。



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