簡體   English   中英

具有主鍵的批量復制不起作用

[英]bulkcopy with primary key not working

我有一個數據庫表,帶有列和一個主鍵。

我想從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主鍵,

注意

當我刪除數據庫中的主鍵時,一切正常

使用SqlBulkCopy.ColumnMappings

列映射定義數據源中的列與目標中的列之間的關系。

...

如果數據源和目標表的列數相同,並且數據源中每個源列的序號位置與相應目標列的序號位置匹配,則不需要ColumnMappings集合。 但是,如果列數不同,或者順序位置不一致,則必須使用ColumnMappings來確保將數據復制到正確的列中。

有關如何使用它,請參見SqlBulkCopyColumnMapping的示例。

我自己找到了解決方案

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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM