Если все, что у вас есть, это молоток, каждая проблема выглядит как гвоздь.
Серьезно, даже ПОПЫТКА использовать Linq2SQL для вставки 3 миллионов записей - неэффективный подход. ORM - это много хороших вещей, они НЕ являются объемными элементами вставки.
Я предлагаю:
- Создать данные таблицы в файл
- Загрузить файл с помощью соответствующих инструментов (механизм массовой загрузки). Вы будете удивлены производительностью (подсказка: я загружаю около 600 миллионов записей за 15 минут);)
Массовая загрузка имеет много преимуществ в производительности. Естественно, предполагая, что вы говорите о чем-то вроде процесса загрузки ETL здесь - но я не вижу 3-миллионную загрузку как что-либо, кроме хранилища данных / отчетности / архивирования в стиле операции загрузки, это определенно и по определению не является обработкой транзакций в реальном времени;)
Используйте правильный инструмент для работы.