We just recently went through the process of deciding between Entity Framework and NHibernate. Although my initial propensity was to lean towards NHibernate, given that Microsoft's track record of actually sticking with a technology has been less than stellar here in the past few years (ex: Linq To SQL, dead at version 1, or for a more recent example were MS decided to ditch ASP.NET Ajax Library client templates, check this), we still decided to go with Entity Framework.
We chose it for the following reasons:
- We are a Microsoft only shop, so it integrated well with our existing tool set.
- We liked the fact that it had the built-in modeling capability with it in Visual Studio 2010.
- We liked the capability of being able to reverse engineer a DB schema into an entity data model (this was really cool).
- We liked the fact that everything we needed was pretty much available out of the box, unlike with NHibernate where we would have to use different tools to do visual modeling, the mapping files can be a pain to deal with at times) and it didn't integrate as nicely with Visual Studio.
Whether or not going with Entity Framework was the right choice remains to be seen. There's always the chance that Microsoft could pull another "Linq To SQL" and say, "Hey, we're throwing away Entity Framework, sorry about that, you should have gone with NHibernate". But we decided that since it is on 2.0 now with VS 2010, there's at least a good chance that it's going to be around for a few years.
So even though we liked NHibernate's proven track record much better than Entity Framework's, we went with Entity Framework for the reasons I mentioned above.
I think you just have to look at the pros and cons of each tool, examine all the options, and try to make the best decision you can.