Parece que esto funcionaría, sin embargo, los cambios (y, por lo tanto, la memoria) que guarda el DataContext van a crecer con cada InsertOnSubmit. ¿Quizás sea recomendable realizar un SubmitChanges cada 100 registros?
También echaría un vistazo a SqlBulkCopy para ver si no se ajusta mejor a su caso de uso.