Это 1 миллион в одной партии или миллион раз по 1 записи за раз?
Если вы ищете пакет, вы можете забыть о Linq2sql с такими объемами. Взгляните на класс SqlBulkCopy, который намного быстрее.
Таким образом, вы можете выбрать гибридное решение - используйте SqlBulkCopy для своего пакета, и вы все равно можете использовать linq2sql для запросов и действий CRUD для отдельных объектов (или небольших пакетов).
Если это только одна запись за раз, распределенная равномерно, думаю, вы все равно справитесь с Linq2sql.