Да, вы можете использовать SqlDataAdapter .
SqlDataAdapter имеет InsertCommand и UpdateCommand , которые позволяют вам указать SQLCommand для использования для вставки новых строк в базу данных и SqlCommand для обновления строк в базе данных соответственно.
Затем вы можете передать DataTable методу Update адаптера данных, и он объединит операторы на сервере - для строк в DataTable, которые являются новыми строками, он выполнит команду INSERT, для измененных строк он выполняет команду UPDATE.
Вы можете определить размер пакета, используя свойство UpdateBatchSize .
Этот подход позволяет вам работать с большими объемами данных и позволяет красиво обрабатывать ошибки по-разному, т. Е. Если ошибка встречается с конкретным обновлением, вы можете сказать ему, что НЕ выдает исключение, а продолжает с остальными обновлениями, установив свойство ContinueUpdateOnError .