I have the following very simple unit test that reproduces a case where DbContext.SaveChanges is not atomic. By not atomic I mean that the committed data can be read before all
Try the database option "Is Read Commited Snapshot On"=True.
We had same kind of issues. This option solved them.
More information on:
http://msdn.microsoft.com/en-us/library/ms173763.aspx
and
Add object and its relationships atomically in SQL Server database