[英]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.