Я пытаюсь использовать SqlBulkCopy для вставки новых строк в мою таблицу DB путем ручного заполнения DataTable с моим приложением.SqlBulkCopy в таблицу с составным первичным ключом
Это прекрасно работает для всех таблиц , за исключением таблицы с составным первичным ключом, состоящим из 3 столбцов. Всякий раз, когда я пытаюсь что-нибудь SqlBulkCopy в эту таблицу, я получаю следующее сообщение об ошибке:
Violation of PRIMARY KEY constraint 'PK_MYCOMPOSITEKEY'. Cannot insert duplicate key in object 'dbo.MyTable'.
The statement has been terminated.
даже возможно ли это?
Я попытался создать первичные ключи моего DataTable с следующий:
dt.PrimaryKey = new[] {dt.Columns["PKcolumn1"], dt.Columns["PKcolumn2"], dt.Columns["PKcolumn3"]};
но опять же, не повезло.
Вот что я и думал. Тем не менее, я ограничил вставку одной строкой значений, которые я знаю **, еще не находятся в таблице базы данных. – kamens
Датбаза думает, что это - какие значения? – Mark
Вы и Майкара верны. Я использую Linq-to-SQL, и во время DB.SubmitChanges(), который вставлял эти внешние строки перед SqlBulkCopy, на моем пути выполнения ходил во внешнем ключе, хотя я явно не добавлял строки самих себя. – kamens