Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question
add comment

7 Answers

up vote 8 down vote accepted

Yes, but with some caveats:

  • 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.

share|improve this answer
    
+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 Evers Oct 27 '10 at 20:25
    
@SnOrfus: FWIW I've started using EF on top of MySQL recently, and really enjoy it. –  Eric King Oct 29 '10 at 21:13
add comment

I would think so. I'm using EF4 code-first (CTP) for developing a multi-tenant web application.

share|improve this answer
    
+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. –  user2567 Oct 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. –  Jeremy Oct 27 '10 at 18:20
add comment

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.

share|improve this answer
    
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. –  STW Oct 27 '10 at 19:59
add comment

I haven't actually used the full stack, but we use it piecemeal in our product and it seems quite mature, though we had to adapt some pieces for our needs.

share|improve this answer
add comment

I think/hope so... I'm starting a project with EF 4 and the new Model-First approach...

For what I've seen EF 4 is much robust and feature complete that the first version... I would say go for it, I know I'm going :)

share|improve this answer
add comment

We are using EF4.1 with the Code First approach for our web project and as stated previously keeping the usage as Microsoft has intended it will keep you out a lot of problems.

One can notice however that the system isn't really mature yet and I say this because:

  1. Behaviour still changes a lot (compared from CTP5 to 4.1)
  2. The LINQ to Entities generator is only able to handle basic types (Int, String, the lot)
  3. Some things didn't work entirely intuitively when you try to merge in existing datasets
    1. It doesn't allow you to only create table definitions for certain dbsets
    2. Mapping fields such as datetimes requires Googling.
  4. See other Known Issues
share|improve this answer
add comment

Yes it is, however you should allocate resources for updating and retesting your application when updates comes out (as with any other framework).

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.