Why is DbContext.SaveChanges 10x slower in debug mode
Whohoo!
Ok, so the reason debug mode was exceptionally slow was because Visual Studio's Intellitrace was recording each ADO.NET event ( all 20, 000 of them ) generated by Entity Framework.
So Tools-> Options -> IntelliTrace and Uncheck "Enable IntelliTrace" fixed the issue.
Or one can also just filter out the ADO.NET events by going to Tools->Options -> IntelliTrace -> IntelliTrace Events and uncheck ADO.NET
Thanks for everyone's suggestions.
A section here talks about Will Intellitrace slow down my app
How to Filter IntelliTrace Events
There are multiple performance considerations for EF and it's known that, compared to many others orm's, operations can be slower than expected/desired for an orm.
(1st) when running on debug will always be slower and (2nd) first run after building will always be slower.
All of this may depend on the complexity of your model. Try to capture the T-SQL statements using SQL Profiler.