My company is looking to use an ORM for new development in .Net. We are currently looking at nHibernate, because of its popularity, however LLBLGen is another option that we may consider. Cost is not a primary factor. We need a solution that provides good separation of the domain model from the database, a good caching strategy, development productivity (i.e. if I can edit it in a GUI instead of config files, great), good customer support.
I know that nHibernate is very popular, but I also know that the price (it's free) may be part of that reason for open source types. Since cost isn't a primary factor (unless the price is > $10,000), which would you choose given our circumstances? Also, what other factors, other than ones that I've listed, would you consider most important in choosing an ORM?
Resolution
We finally decided upon NHibernate as a solution, however in hindsight, I think I would have gone with LL if we had it to do over again. I'm just not found of the xml mapping files. The code generators that I found for NHibernate left a lot to be desired. I do find Fluent NHibernate to be an interesting development, but I'd rather wait for it to mature first before using it.
As it turned out, the most important part of my learning process turned out not to be the technologies, but two design patterns: the repository and separated interface patterns. By defining a repository interface for data access (Jeffrey Palermo has a number of blog posts on this and both the Apress and Wrox MVC books show this as well), we can use LinqtoSQL, LLBLGen, NHibernate, etc. and swap out the DAL implementation later if we switch. So while one of my co-workers is using NHibernate on his app, I chose to use LinqToSQL on my most recent app and it worked just fine.