In general ORMs are not meant for ETL-style work, such as loading 1m records. The fancy stuff they do, such as change tracking, is pretty lost there and is pretty much unneeded overhead. Straight out ADO.NET is your friend here.

But it would probably help if you used one session and one transaction for more than a single record: