Vypadá to, že by to fungovalo, ale změny (a tím i paměť), které uchovává DataContext, porostou s každým InsertOnSubmit. Možná by bylo vhodné provést SubmitChanges každých 100 záznamů?
Také bych se podíval na SqlBulkCopy abyste zjistili, zda se vám nehodí lépe.