Как уже упоминалось в AdaTheDev, SqlBulkCopy можно вставлять только при наличии альтернативной библиотеки, которая позволяет выполнять операции Upsert.
Отказ от ответственности : я владелец проекта Массовые операции
В библиотеке Bulk Operations есть метод " BulkMerge ", который вставляет или обновляет строки на основе указанного ключа.
var bulk = new BulkOperation(connection);
bulk.ColumnMappings.Add("ID", true);
bulk.ColumnMappings.Add("Column1");
bulk.ColumnMappings.Add("Column2");
bulk.ColumnMappings.Add("Column3");
bulk.BulkMerge(dt);