Geeks With Blogs
Josh Reuben
Model Functionality
·        Support for Enums for property types from lookup tables
·        Allow default date = DateTime.Now - The only way to set a default date in the entity data model is to put a hard date in there, a string. If you have a known default date (e.g. 1900-01-01) this is fine. But often we want NOW to be the default and there's no way to indicate that in the model.
·        Support for System.IO.Stream instead of Byte[] for varbinary type of fields
·        Support GUID as Entity Key -http://leedumond.com/blog/using-a-guid-as-an-entitykey-in-entity-framework-4/
·        Lazy Loading at Column Level - more granular than mapping to a lazy loaded entity
·        Store validation rules in the model that get exposed via WCF DataServices
·        config free/unregistered providers – e.g. use a DbProviderFactory or DbConnection
Mapping and CodeGen
·        Database schema metadata hints – for generating: M-M link tables if no payload exists in link table, TPT inheritence, table splits, entity splits.
·        An option to generate SQL updatable views (with INSTEAD OF Triggers) on top of tables
·        Ability to generate DB User / role permissions in the datastore
·        Ability to map a schema over a EAV store
·        Schema Migration - Database change management and notifications. Database projects diff-comparing a live database with a set of text files is a clunky approach. Migrations have been used successfully on other platforms (notably, Ruby on Rails) to achieve iterative database change management.
·        Improved SQL Generation - the SQL generated is a mess of crazy subselects, joins, and unions. QueryView generated SQL should use simple WHERE instead of CASE statements. simple LINQ SELECT statements with 4 or 5 includes or LET statements result in nearly 5000 line SQL statements when an equivalent hand-written SQL statement is ~15 lines à performance & readability when debugging issues.
·        Customize mapping for stored procedures - map stored procedure columns to entity properties , including complex properties.
·        API for checking database schema correctness - context.ValidateDbSchema()
·        Tautology filter along the lines pluralization service – e.g. generate CustomerId instead of CustomerCustomerId
·        Generate model from multiple databases - build a domain model over data in multiple databases. Without having to manage database objects - linked servers, views etc.
·        "Update Model from Database As If It Were From A New Database" - should optionally update CSDL section - see http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/e05f6c62-2dbd-4c3f-87f9-c30c184597c5, “Update Model from Database” updates only the data type lengths and nullability, however, it won’t always refresh the CSDL section. Due to this behavior, every time I update my database schema, I need to delete the .edmx file from my project and re-generate the EDM again from the database. BTW, this also requires a kludge to remove the previous ConnectionString from app.config, or else the names of the generated entities are not the same.
·        Database metadata for generation hints – e.g. allow choice of inheritance strategy on a case by case basis
·        Improve discriminator on Table-per-Hierarchy – currently only supports Is Null.
·        RecreateDatabaseIfModelChanges shouldn't drop database – should instead drop tables and recreate them.
·        API to access MSL - System.Data.Mapping.StorageMappingItemCollection doesn't provide useful public API.
·        keep ssdl changes after update the model from db.
·         
Designer
·        Ability to generate function Import Mappings from designer – a function builder , instead of xml editing the .edmx file
·        Design time support for SPs with a payload free M-M association
·        Design time support for model defined functions
·        An ESQL Query builder with Intellisense and syntax checker
·        Design time support for single step drag and drop of a property to another entity – update all mappings
·        Design time support for common QueryView use cases: filters with various operators (e.g. >, <), inheritence conditions beyond NULL and equivalence checks, column to property casting (e.g. int to string), computed column mapping, mapping a subset of columns from a table, map single column to multiple properties, map multiple entities to one table, map TPT inheritece based on different PK & FK
·        Multiple designer pages for a single EDMX - SQL Server supports multiple diagrams for the same database. For a large database the number of entities displayed within the designer can be overwhelming.
·        Entity Search - it is difficult to find the entity within the diagram
·        Layout modification - it is nearly impossible to change the layout.
·        SQL Server had been able to support multiple diagrams for the same database for many years. I would love to see a similar feature with the EF designer.
·        Designer view customization: show / hide relationships, fields; collapsible containers
·        relations between entities from different edmx’s.
·        EF Designer Store Editing - The EF designer only allows you to edit the model, not the store. Difficult to actually do model-first development. Ability to add tables, views, stored procedures, and constraints to map entity properties to.
·        Entity Property Ordering - Entity properties should be able to be re-ordered within their entity.
·        Designer Annotations support -CSDL supports Annotations - solve renaming problem without drop and recreating entities (or properties).
·        Improve Model First: preserve user intent - The "Generate Database from Model" feature should include functions in the power pack (http://bit.ly/8akJIs) to incrementally update a database from the model whilst preserving user intent – e.g. rename an Entity should rename the table, not drop the table and its data and add it again.
·        Easier MEST POCOs - currently complex to map entities (the table/view representations that were added to the EF Designer) to a single POCO. need to manually code this mapping in various places. Needs designer support.
·        support for other types of mapping (TPC, Horizontal Entity Splitting)
·         partial model views - (http://msmvps.com/blogs/matthieu/archive/2009/04/07/edm-designer-new-version.aspx, http://msmvps.com/blogs/matthieu/archive/2009/04/11/edm-designer-new-feature.aspx)
·        view complex types on the designer and not only on Model Browser window - see (http://msmvps.com/blogs/matthieu/archive/2009/01/07/edm-designer.aspx).
·        Design time support for polymorphic stored procedure resultset - When a stored procedure returns records about more entities in a hierarchy, we have to manually modify Mapping file to specify discriminator column and the type. It would be great if it could be done via designer.
·        see ErWin, Power Designer
Performance
·        Designer performance – large EDMXs are slow to load
·        Asynchronous database calls - a high load service application should make async IO calls
·        Filter predicate for Include() operator- There is no ability to filter included objects in ObjectQuery<TSource>.Include method.
·        support for ordering in Include() - using the include() operator with a 1 to many relationship, the data is loaded without any specific order, requiring a second reload specifying the sort order
·        batch load graphs - Stored procedure support for eager loading graphs -a stored procedure can return only a single entity type to EF. It would be great if a stored procedure could return orders and details information in a single roundtrip.
·        Batch CUD support - When SaveChanges is called, rather than sending one SQL statement per insert/update/delete, batch it all up into one SQL statement
·        Second Level Cache - Entity Framework currently supports only cache for entities, not cache for queries
·        Transaction scoping - share a store connection between multiple contexts within TransactionScope in order to avoid MSDTC promotion.
·        Support for asynchronous queries
·        Navigation Property without Load – currently, user.Cars.Add() or user.Cars.Count() causes EF load all Cars for the parent user entity.
·        TPT (Table-Per-Type) Inheritance Performance - Currently not production ready. the more subclasses you add, the time it takes to generate SQL - With a simple base class (5 or 6 fields), and around 30 simple subclasses (2 or 3 fields a piece), it takes almost 2 minutes to generate the SQL (ObjectQuery.ToTraceString()) and execute it on the server. Even with empty tables (so that a query would return no data). Doing a simple "flat" query (no subselects), left joining each subclass table, could produce the same results, with better performance. See Note>http://samscode.com/index.php/2010/01/the-entity-framework-v1-and-v4-deal-breaker-tpt-inheritance/
·        Allow commit subset of selected changes - There are cases, when we would like to commit only selected changes from changeset. Let's say in complex hierachy ef is not able to resolve all relations and set correct id's, so we would save first parent items, then child items with correct parent id's.
·        Bulk Object Graph Persistence - persist an entire object graph in one DB call.
·         
·         
Improved SQL Server Support
·        spatial types -geometry, geography
·        hierarchyid
·        Unique Constraint Support - SQL Server supports Unique Constraints on tables. The Entity Framework currently only supports basing referential constraints on primary keys and does not have a notion of a unique constraint.
·        Support for default values
·        support for full-text indexing
·        Table-Valued Functions
·        Table-Valued Parameters for stored procedures
·        full text search
·        SQL notification and change tracking
·        XML datatype
·        MARS
·        DateTimeOffset
·        MERGE statement
·        Service Broker – provide distributed ORM with WCF wrapper
·        SSIS – provide a WF wrapper
 
POCO, STEs and distributed apps
·        POCO by default – otherwise need to rework for WCF serialization
·        Ignore attribute for POCO entities – allow easy computed properties that need no persistence.
·        Support for POCO Entities with non-default constructors , readonly properties
·        POCO support for complex type that can use inheritance
·        Client side merge, distributed cache support for entities merge
·        DTO generation – like automapper
·        ApplyCurrentValues / ApplyOriginalValues – should compare changes for the entire object graph
·        STE automatic support for serializing proxies to cache
·        STE simple property setting for updating only changed columns instead of updating all columns
·        For distributed apps (ie WCF), the reconciliation process with the ObjectStateManager is convoluted.
·        Better change tracking for POCO proxies – currently in proxied poco classes, an entity is marked as modified whenever a property is set, regardless of whether the value has actually changed.
LINQ To Entities
·        Ability to retrieve a complete hierarchy from a self referencing table without using a CTE Stored Proc
·        ExecuteStoreQuery support for TPH and complex payload properties
·        LINQ support for comparison of varbinary columns -SQL-supported <, <=, >, >= comparisons that lexicographically compare the bytes in the column. see http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/f90dec50-acc7-4157-8927-acb246ec3572
·        Support for .Contains(Entity)
 
 
Bug Fixes
·        inheritance defined using queryView doesn't work properly with referentialConstraint associations
·        Incorrect handling of Nullable<T> variables in 'where' clause
Posted on Monday, September 13, 2010 11:33 PM NET 5.0 | Back to top


Comments on this post: Entity Framework 5.0 - not quite there yet!

# Send to Microsoft?
Requesting Gravatar...
All nice and dandy but do the guys building EF know about ALL these suggestions?
Left by Andrei Rinea on Apr 21, 2011 1:34 PM

# re: Entity Framework 5.0 - not quite there yet!
Requesting Gravatar...
Strongly recommend someone to staple a copy to EF team manager's forehead.
Left by Kelvin on May 18, 2012 2:29 AM

# What is this list?
Requesting Gravatar...
I'm not quite sure what this post is about? IS this your suggestions or items that are accepted for future release?

I know some of these items are now in EF5 as of August 2012! (So you can't call them suggestions anymore if that was the intention).
Left by Ben Swayne on Aug 21, 2012 3:04 AM

# re: Entity Framework 5.0 - not quite there yet!
Requesting Gravatar...
The underlying goal is to make the process of the systems easier to use. - Paradise Home Improvement Charlotte
Left by Michael Douglas on Dec 22, 2016 11:45 AM

Your comment:
 (will show your gravatar)


Copyright © JoshReuben | Powered by: GeeksWithBlogs.net