带主键的批量复制不起作用

Mar*_*oli 7 c# sql datatable sqlbulkcopy

我有一个数据库表,包含列和主键。

我想从我的 c# 中的数据表进行批量复制。

当我的表中有主键时,我得到了异常,因为该表有 6 列,而我的数据表只有 5 列。

请问我该怎么办?

我应该将主键添加到我的 c# 中的数据表中吗?

(如果您需要任何代码请告诉我)

这是数据表

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;
        }
Run Code Online (Sandbox Code Playgroud)

但在我的数据库表中,我有完全相同的列,但有额外的ID主键,

笔记

当我删除数据库中的主键时,一切正常

Mar*_*oli 7

我自己找到了解决方案

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");
Run Code Online (Sandbox Code Playgroud)


Rem*_*anu 5

使用SqlBulkCopy.ColumnMappings

列映射定义数据源中的列与目标中的列之间的关系。

...

如果数据源和目标表具有相同的列数,并且数据源中每个源列的序号位置与相应目标列的序号位置相匹配,则不需要 ColumnMappings 集合。但是,如果列计数不同,或者序数位置不一致,则必须使用 ColumnMappings 来确保将数据复制到正确的列中。

SqlBulkCopyColumnMapping有关如何使用它的信息,请参阅示例。

  • 我无法告诉你为什么有人投了反对票,但我可以告诉你不要担心。不值得。 (3认同)