I am working in a Microsoft .NET shop where it is okay to use NHibernate or ADO.NET EF. What guidance should we be using about when you should choose one over the other?
Microsoft has recently begun developing a new solution, called .NET Ria Services (for now), that will be "ORM independent" for getting data into and out of Silverlight from a business logic layer living on the server.
They've publicly mentioned (on slides at MIX, even) that NH WILL be supported here.
If you're looking for a solution that has the most community support, NHibernate is definitely the answer. I'll concede that it has a steep learning curve, but in my experience it is most certainly worth it. Just do a comparative search for "entity framework" and "nhibernate", and you'll see what I mean. Most of the EF stuff will be "press", while the NHibernate stuff will actually be down-to-the-guts technical, gory details. And questions. Being answered.
But as other posters have mentioned - I'm sure the Entity Framework will improve over time. For now though, I believe they're trying to solve too many problems with one toolset. NHibernate does just one thing, but does it exceptionally well.
There's also the issue of application design here. EF seems to be (in its current incarnation) built to deliver a database to a C# application. NHibernate goes the other way, and makes it easier to get an object model persisted.