массовая копия с первичным ключом не работает

У меня есть таблица базы данных со столбцами и первичным ключом.

Я хочу выполнить массовое копирование из таблицы данных в моем С #.

Когда у меня есть первичный ключ в моей таблице, я получаю исключение, потому что в таблице 6 столбцов, а в моей таблице данных - только 5.

что мне делать, пожалуйста?

Должен ли я добавить первичный ключ в мою таблицу данных в моем С #?

(если вам нужен какой-либо код, сообщите мне, пожалуйста)

это дата

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 первичным ключом,

Примечание

когда я удаляю свой первичный ключ в базе данных, все работает отлично


person Marco Dinatsoli    schedule 21.11.2014    source источник
comment
Обычно мы прекрасно справляемся с нашими способностями к отладке психического магического шара. Но я думаю, нам понадобится код для этого.   -  person Yuval Itzchakov    schedule 21.11.2014
comment
@YuvalItzchakov Ладно выложу код   -  person Marco Dinatsoli    schedule 21.11.2014
comment
@YuvalItzchakov Я предпочитаю видеть код в недрах верблюда :-p   -  person Oscar    schedule 21.11.2014
comment
@ Оскар, пожалуйста, не смейся   -  person Marco Dinatsoli    schedule 21.11.2014
comment
@YuvalItzchakov обновил вопрос   -  person Marco Dinatsoli    schedule 21.11.2014
comment
Установлен ли ваш первичный ключ в соответствии со спецификацией личности True   -  person Rajesh    schedule 21.11.2014
comment
@YuvalItzchakov, почему ты попросил код?   -  person Marco Dinatsoli    schedule 21.11.2014
comment
Является ли customerID вашим первичным ключом или другим?   -  person Rajesh    schedule 21.11.2014
comment
@Rajesh он другой. это ID   -  person Marco Dinatsoli    schedule 21.11.2014
comment
Я не отрицал этот вопрос, но ... отказался от ПК, чтобы вы могли скопировать данные? ... Кажется, что-то вроде крайности.   -  person Eric Wu    schedule 24.03.2016


Ответы (2)


Я сам нашел решение

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");
person Marco Dinatsoli    schedule 21.11.2014
comment
Это не сработало для меня, пока я не установил сопоставление столбцов. - person Ken Wilcox; 09.10.2018
comment
блин, у меня 55 столбцов: / - person Muflix; 02.07.2020

Используйте _1 _ :

Сопоставления столбцов определяют отношения между столбцами в источнике данных и столбцами в месте назначения.

...

Если источник данных и целевая таблица имеют одинаковое количество столбцов, а порядковый номер каждого исходного столбца в источнике данных совпадает с порядковым номером соответствующего целевого столбца, в коллекции ColumnMappings нет необходимости. Однако, если количество столбцов различается или порядковые номера не совпадают, необходимо использовать ColumnMappings, чтобы убедиться, что данные копируются в правильные столбцы.

См. Пример на странице SqlBulkCopyColumnMapping < / a> о том, как его использовать.

person Remus Rusanu    schedule 21.11.2014
comment
loooool, правда, спасибо, но я только что ответил, это то же самое, что вы сказали, я приму ваш ответ, но не могли бы вы сказать мне, почему кто-то проголосовал против этого вопроса? - person Marco Dinatsoli; 21.11.2014
comment
Я не могу сказать вам, почему кто-то проголосовал против, но могу сказать, чтобы вы перестали беспокоиться. Не стоит. - person Remus Rusanu; 21.11.2014