Sembra che funzioni, tuttavia le modifiche (e quindi la memoria) conservate da DataContext aumenteranno con ogni InsertOnSubmit. Forse è consigliabile eseguire un SubmitChanges ogni 100 record?
Vorrei anche dare un'occhiata a SqlBulkCopy per vedere se non si adatta meglio al tuo caso d'uso.