Since I've just recently started using nHibernate, I'll add my two cents. The learning curve is not that bad because the community is good, the documentation is decent, and there are a lot of good samples available. I have had some difficulty with mapping by code since the documentation still deals mainly with XML-based configuration, but part of my issue was unfamiliarity with Lambda expressions and other concepts (never used an ORM before). For someone more experienced, I doubt it would be too much trouble.
I definitely have been developing DB first and it hasn't presented any problems. For a new system I'm working on, I have a separate DB project that generates SQL scripts but isn't connected to nHibernate in any way. Very easy. I even have some very customized stored procedures that I use through nHibernate, which were also very easy to setup. You can return full, managed entities or just report-type DTOs.
We evaluated EF as an alternative but found that it just wasn't quite as good. And honestly, once you get into more complicated scenarios, I can't imagine the learning curve for EF being any better. I was worried at first that nHibernate would be too complicated to learn in a short amount of time but it appears that fear was unfounded.
-Patrick
Hi Joel,