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..)