So, I've been evaluating Entity Framework and NHibernate (I'm not looking for an EF vs. NH battle here, though!).
One thing that I see come up very often is that NHibernate is recommended for "legacy"/brownfield database projects, and lighter-weight ORMs (Dapper, etc) are sometimes recommended for newer dbs.
I will be applying my ORM to a brownfield database. What specific features of NHibernate make it so widely recommended for "legacy" dbs. (I have never heard anyone say "here's why NHibernate is better for legacy DB's -- I really want to know that, so that I can evaluate NHibernate appropriately)
And by the way, what is the definition of legacy here? Do people mean
- "databases that are not well normalized"?
- "databases that are being accessed through non-ORM means, such as SQL queries or stored procs? (or)
- not talking about the database at all, but referring to classic 2 tier systesms (or 2-tier web apps, where there is thick session state, and no application tier)?
- Any database that is isn't a noSQL database?
If it's of any use the discussion. I will be using this ORM to build distributed, multi-tier software. So I think that a lot the stateful features in ORMs -- like change tracking, etc, will not matter to me very much.