I'm looking into Entity Framework for a new project that I'm going to be taking on and as part of my research into it I'm asking some industry professionals if it's stable and ready for 'real world' implementation.

In the running is:

EF

NHibernate

DevExpress XPO

I already have a great deal of experience with XPO, but I'm not particularly happy with it.

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.
If this question can be reworded to fit the rules in the help center, please edit the question.

7 Answers
7

It's fully supported by Microsoft, and has a growing community--but being newer than its closest competetor, nHibernate, it still doesn't have quite as mature a community.

Along with having a less mature community, there will be times where a feature is available with EF4 but barely documented; or EF4 will throw exceptions which Google can't help you with.

It is full-featured when used as Microsoft intends, but in my experience it can be quite difficult to retrofit into an existing system. Ideally you'll use it in a greenfield scenario with a 100% Microsoft stack. It's certainly flexible enough to intermingle with other systems, but doing so increases the difficulty substantially.

However, to reiterate the main point, it is complete and stable enough for production use.

One key thing to point out, which seems obvious but is often overlooked until it causes pain, is that an ORM works to map from the relational paradigm to the OO-paradigm. If either of these tiers doesn't follow the rules of its respective paradigm then you'll feel extra hurt.

This can go both ways--if you're well versed in the relational/set-based paradigm of SQL and OOP then the ORM will let the two intermingle like butter. If your database looks like it wants to be OO, and your OO-code looks like it wants to be record-based, then YMMV.

+1: Thanks for the info. Fortunately, the project is a greenfield one almost entirely in the .NET stack (still debating between mysql and sql server), and I'm going to be modelling the domain first (and hopefully generating the table structure)
–
Steve EversOct 27 '10 at 20:25

@SnOrfus: FWIW I've started using EF on top of MySQL recently, and really enjoy it.
–
Eric KingOct 29 '10 at 21:13

+1 - Yes, I've done some coaching in a team that used it intensively in a very large enterprise project, and it worked pretty well. That was with the first version, not the latest. So I'm sure it's 100% safe to use the latest version.
–
user2567Oct 27 '10 at 17:21

I don't know how you can be 100% sure of any software you haven't actually run in a production environment.
–
JeremyOct 27 '10 at 18:20

We have been using EF in several production applications. We also have NHibernate in several production apps. The comment by STW that EF works best "when used as Microsoft intends" is certainly true. It is also true of NHibernate that it works best when used following the patterns that the NHibernate team intended. I have no knowledge or experience with XPO.

I do not regret putting NHibernate into production.
I do not regret putting Entity Framework into production.

One of the driving factors to use EF was the integration with LINQ. I know that NHibernate has done a lot of work with LINQ as well but have not had the time to investigate that as yet.

Working with both is a great way to learn how to work with both. It's a little like learning both VB.NET and C#--you ask questions when you see differences, and asking those questions greatly enhances your understanding in the end.
–
STWOct 27 '10 at 19:59