ADO.NET Entity Framework 2+ Top 3 “Must Have” Features
I’ve spent quite a bit of time trying to use ADO.NET Entity Framework for a large web application here and run across some shortcomings that make it unusable for this project. As such I’ve come up with my top three requests for the next release(s):
- Multiple related designer files.Let me create multiple EF diagrams and re-use types across them from a single schema! There is a Using tag in the EF schema that lets you do this, but it can only be setup through the XML editor, and then you can only navigate one way from a relationship between the two entities that cross designers. Not a good solution!!! This would also solve the problem of only letting one person have the designer checked out at once. This is the most crippling parallel development and team scale issue of the current EF implementation for projects with large database schemas.
- Better SQL statement optimization for SQL server. Currently LINQ creates much better performing queries than EF for the same database and joins. This is due to the storage to conceptual abstraction as it is currently implemented by EF. I’m sure this can be optimized to work better in a future release.
- Full POCO support. I want to return classes from EF queries that have no base class or attributes that deal with mapping. There is an EF-contrib project that does this, but it’s not built-in and needs to be more robust. This will allow me to return POCOs from EF behind other layers of my architecture and not have any coupling to the EF framework.

These are really show stoppers in most situations. We just recommended against EF at a client specifically for your second point. The EF generated queries for their complex queries were poor performers and we found no recourse to correct the problem.
What do you think about the Code Only approach offered in the next version of Entity Framework? Looks like it’s close, but I hesitate to jump when NHibernate is so solid and SubSonic offers nearly the same options with what seems a much simpler platform.