Изглежда, че това ще работи, но промените (и следователно паметта), които се съхраняват от DataContext, ще растат с всеки InsertOnSubmit. Може би е препоръчително да извършвате SubmitChanges на всеки 100 записа?
Също така бих погледнал SqlBulkCopy за да видите дали не отговаря по-добре на вашата употреба.