主キーが機能していないバルク・コピー

c# datatable sql sqlbulkcopy

質問

私は列と秘密鍵を持つデータベーステーブルを持っています。

私はC#のデータテーブルからバルクコピーをしたい。

私のテーブルにプライマリキーがあると、テーブルには6列あり、データテーブルには5しかないので例外があります。

どうすればいいですか?

プライマリキーをC#のデータテーブルに追加する必要がありますか?

(コードが必要な場合はpleaeを教えてください)

これはデータテーブルです

private DataTable getBasicDataTable()
        {
            DataTable dataTable = new DataTable();
            dataTable.Clear();
            dataTable.Columns.Add("customerID", typeof(int));
            dataTable.Columns.Add("firstName", typeof(string));
            dataTable.Columns.Add("lastName", typeof(string));
            dataTable.Columns.Add("showsNumber", typeof(int));
            dataTable.Columns.Add("visitNumber", typeof(int));
            dataTable.Columns.Add("cancellation", typeof(int));
            return dataTable;
        }

私のデータベーステーブルでは、私はまったく同じ列を持っていますが、余分なIDプライマリキーでは、

注意

データベースのプライマリキーを削除すると、すべてが完全に機能します

受け入れられた回答

私は解決策を自分で見つけた

bc.ColumnMappings.Add("customerID", "customerID");
                sbc.ColumnMappings.Add("firstName", "firstName");
                sbc.ColumnMappings.Add("lastName", "lastName");
                sbc.ColumnMappings.Add("showsNumber", "showsNumber");
                sbc.ColumnMappings.Add("visitNumber", "visitNumber");
                sbc.ColumnMappings.Add("cancellation", "cancellation");

人気のある回答

SqlBulkCopy.ColumnMappings使用しSqlBulkCopy.ColumnMappings

列マッピングは、データソースの列と宛先の列との関係を定義します。

...

データソースと宛先テーブルの列数が同じで、データソース内の各ソース列の順序位置が、対応する宛先列の順序位置と一致する場合、ColumnMappingsコレクションは不要です。ただし、列数が異なる場合、または順序位置が一致しない場合は、ColumnMappingsを使用して、データが正しい列にコピーされるようにする必要があります。

使用方法については、 SqlBulkCopyColumnMappingの例を参照してください。



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