Microsoft should have backed NHibernate instead of writing yet another ORM. I can understand the business reason for EF: they are afraid of giving .NET developers skills that would be directly transferable to competitor's technologies. (Hibernate is a Java standard, literally..)
This sort of ignores the history of the EF, though. The EF is basically a leftover from the WinFS project and originally they weren't even really thinking of it as primarily an ORM, but rather a way to have a common data model shared between WinFS and some other projects.