2014-11-10 3 views
-1

У меня есть таблица, которую я хочу скопировать в другую таблицу, используя SqlBulkCopy, но в моей таблице назначения у меня есть идентификатор. Так как это:SqlBulkCopy начальный индекс?

Источник таблица

variable1, variable2, variable3, variable4 

стол

ID, variable1, variable2, variable3, variable4 

Как я могу сделать чтобы убедиться, что SqlBulkCopy начинается с индексом 1 в моей таблице назначения Пункт назначения? Единственная работа вокруг я нашел, что добавление идентификатора в качестве последней переменной, например:

Таблица назначения (2)

variable1, variable2, variable3, variable4, ID 

EDIT Как видно в моем ответе на Христоса, ID уже установлен как IDENTITY (1,1).

+0

Итак, что случилось? Вы получили сообщение об ошибке? Значения идентификатора неверны? – TomT

+0

Вы говорите, что мои атрибуты не совпадают. Поскольку он начинается с идентификатора в моей таблице назначения. – Zee

ответ

0

Если схемы в источнике и в пункте назначения различны, вам необходимо указать column mappings. Если отображения не определены, то столбцы отображаются неявно на основе порядкового положения. Вы можете добавить отображения, как это:

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString)) 
{ 
    bulkCopy.DestinationTableName = "destination_table"; 

    bulkCopy.ColumnMappings.Add("variable1", "variable1"); 
    bulkCopy.ColumnMappings.Add("variable2", "variable2"); 
    bulkCopy.ColumnMappings.Add("variable3", "variable3"); 

    // etc. 

Таким образом, столбец ID в пункт назначения будет игнорироваться и значение по умолчанию (идентичность) будет использоваться для его заполнения.