Yeah, I know everyone is tired of the Entity Framework argument, but maybe we can start a real discussion. I’ve seen two very different conversations about the Entity Framework from the data centric folks (pro) and the DDD/TDD/OOP folks (con). It’s not even a real argument, because we’re concerned about very different things that aren’t even in real opposition. I’m completely agnostic about the Entity Data Model and the farther reaching, universal data access goals of the EF. I’m strictly concerned with the EF’s poor applicability for evolutionary design, Domain Driven Design, testability, and separation of concerns. The EF seems to have all the major bases all covered in terms of functionality, it’s just the *way* that it implements this behavior that concerns me.
The problem with the blogging from last week is that it’s two different conversations! The “pro-EF” folks seem to be giddy about the functionality and features of the EF. I’m steamed about what I feel to be the poor usability of the EF. I do fully understand that the EF is about so much more than O/R mapping, I just don’t think that their vision for data access adds more value than the harm that EF will do to my architecture by being intrusive. The cool thing is that the EF team *can* actually make both camps happy. There is absolutely no technical reason that the EF cannot deliver all
of this utopian EDM goodness AND make the necessary structural changes
to allow for real Persistence Ignorance to address my concerns about
its usability.
The only real argument is their priority queue. I obviously think the EF team needs to get a full Persistence Ignorant story in place before adding any other new functionality.
For the record, I’m somewhat dubious about the actual usefulness of the Entity Data Model, but I will very seriously consider using the Entity Framework the minute that the EF team ships a real Persistence Ignorant option (which HAS to include transparent lazy loading) and a streamlined mapping configuration story (i.e. I want the conceptual model completely hidden away). Until then, all that impressive sounding EDM stuff does not justify what I feel are severe compromises in my application architecture that do not occur with other persistence solutions.