Использование LINQ для вставки больших объемов данных не очень хорошая идея, за исключением, может быть, сложных схем, которые требуют больших преобразований перед копированием. Он создаст отдельный запрос для каждой вставленной строки, в дополнение к регистрации их всех в журнале транзакций.
Здесь можно найти гораздо более быстрое решение здесь - он использует SqlBulkCopy
, который представляет собой метод для вставки больших объемов данных в один запрос без ведения журнала транзакций для его замедления. Это будет на порядок быстрее, и я говорю вам это из личного опыта с обоими методами.