tags:

views:

answers:

I'm wondering what the best feature(s) of the orm framework you use and what features you find yourself using most?

What is the reason you chose the framework you use?

I'm just trying to compare them and wondered if any offers advantages over the other. (it's all very well googling this but you can't beat first hand user experiences!)

Specifically I'm looking for a .Net framework but still curious about ORM/features in other langauges.

Thanks in advance!

+2 A:

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.

@Michael Maddox -We just liked the integration with Visual Studio that EF provides for this feature. Namely, we liked the .edmx file generation and the ability to see the schema visually, with almost no effort and no third party add-ons/tools,etc.

Be wary that EF is very buggy (4.0 is not nearly as bad as 3.5 was). Working by myself on a single project, I found [8 serious bugs](https://connect.microsoft.com/data/SearchResults.aspx?UserHandle=Daniel.Pflughoeft), the most serious of them being [this one](https://connect.microsoft.com/data/feedback/details/545491/linq-to-entities-incorrect-handling-of-null-variables-in-where-clause); problems relating to it get posted on stackoverflow *all* the time.

The main reason is that I get rid of XML or annotations for defining database schemes. I really hate shifting complexity from coding to configuring having to cope with trillions of xml configuration files and - even worse - distributed configuration using annotations.

2010-07-03 20:43:35

I believe Fluent NHibernate or code first Entity Framework 4, for example, would be the .NET equivalent.

I'm wondering what the best feature(s)
of the orm framework you use and what
features you find yourself using most?

I would say Linq support is the killer ORM feature for me. Right now, writing Linq queries against a database requires an ORM. Linq gives me compile time static type checking against the database in my queries, which now gives me compiler errors in some scenarios where the code and database are out of sync. I tend to work on databases that change a lot (agile) and work with teams of developers where database schema updates can come from any team member.