bulkcopy with primary key not working

随声附和 提交于 2019-12-24 02:12:32

问题


I have a database table, with columns and a priamary key.

I want to do the bulkcopy, from a datatable in my c#.

When I have primary key in my table, I got exception because the table has 6 columns, while my datatable has just 5.

what should I do please?

Should I add the primary key to my datatable in my c#?

(if you need any code tell me pleae)

this is the datatable

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;
        }

but in my database table, I have the exact same columns, but with extra ID primary key,

Note

when I delete my primary key in the database, everything works perfectly


回答1:


Use SqlBulkCopy.ColumnMappings:

Column mappings define the relationships between columns in the data source and columns in the destination.

...

If the data source and the destination table have the same number of columns, and the ordinal position of each source column within the data source matches the ordinal position of the corresponding destination column, the ColumnMappings collection is unnecessary. However, if the column counts differ, or the ordinal positions are not consistent, you must use ColumnMappings to make sure that data is copied into the correct columns.

See the Example at SqlBulkCopyColumnMapping for how to use it.




回答2:


I found the solution myself

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


来源:https://stackoverflow.com/questions/27060852/bulkcopy-with-primary-key-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!