Transparency in the design process

Published 23 June 08 04:12 PM | dpblogs 

Today marks the first day of engineering for the ADO.NET Entity Framework V2.0. V2 of the product is a combination of a continued investment in our greater data platform vision as well as a focus on new and expanded ORM scenarios. Some of the things that we are trying to do in this release are as follows:

  • Persistence Ignorance : We are looking at ways to introduce a full POCO solution for state management and interaction with the ObjectContext.
  • N-Tier Support : Today we support Data Contract serialization of entities or exposing entities via Astoria, in V2 we would like to expand to a DataSet like experience where one can remote graphs and changes to the graphs across the wire using standard WCF services.
  • Code-First : We want to enable a convention based, code only experience with EF wherein one may start with classes and opt-in to database generation and deployment. We expect that we would provide attributes and external mapping capabilities for people who wanted something beyond the convention based mapping.
  • TDD Scenarios: With the introduction of POCO classes some of the TDD scenarios get a lot easier, and we are looking at incorporating some other asks to better fill out the scenario, such as making our ObjectQuery<T> and other generated members of our context and classes virtual.
  • FK's : Today we support bi-directional relationships, and we are looking at introducing model concepts to facilitate the definition of FK like experiences in the model or in one's POCO classes.
  • Lazy Loading: Today we support explicit lazy loading (calling .Load), and we are looking at various options around LoadOptions as well as outright implicit lazy loading.
  • Query Tree Re-Writing: This allows framework develolpers to contextualy, vertically and horizontally filter query results.
  • ...

We have been looking at various options to ensure that the design of Entity Framework V2 truly reflects the requirements of the day to day challenges that our developer community faces when building real-world applications and services. We would like to start by being as transparent as possible in the design process. The approach we take will be similar to what you have seen on Astoria Team blog (ADO.NET Data Services), but I wanted to briefly describe how we’ll go about it so you know exactly what you are looking at when reading one of our design-related posts.

How did we get here? Version 1 of the ADO.NET Entity Framework is set to ship as a part of Visual Studio 2008 SP1 and the .NET Framework 3.5 SP1. This release has been the result of a number of years of effort. During V1 the team was focused on implementing an initial set of scenarios as well as the groundwork necessary to continue to build out the Entity Framework in future versions.

Where are we now? Today marks the first day of engineering for ADO.NET Entity Framework V2.0. What this means in practice is that we have a team with developers, testers, program managers, etc., that we have regular design meetings, and that we have a timeline (or more accurately, that we’re required to have a timeline but of course we’re still working on it :).

Transparency in the design? Over the years Microsoft has been opening up the engineering processes incrementally. Long ago there were only betas, and that was the only chance to see and give feedback about a product before it shipped. Then we started to do Community Tech Previews (CTPs). CTPs enabled us to provide bits more often and gather feedback frequently. The goal with increasing the transparency of design is to take this one step further: we would like to enable folks that are interested in Entity Framework version 2 to follow the design topics as we discuss them, and have the opportunity to provide feedback right during the time where we are actively discussing a certain aspect and before we have made a final decision.

What exactly would we make visible? In short, our design process. To be more concrete, I’m not talking about some fancy set of specifications. What I mean is that as we go through the detailed design of the various aspects of Entity Framework V2, we would post to this blog a) the meeting notes from our design meetings (the team has a design meeting twice a week, plus a lot of impromptu hallway chats), and b) deeper write-ups of specific design challenges where we’d like folks to understand how we’re approaching a problem and provide a channel for deep, detailed feedback.

How transparent is transparent? We want to be completely clear about the scope of the information we are sharing. One of the things we need to learn both from the Microsoft side and from the community side is whether the model works within a practical set of restrictions. We will post as much of our discussions as it is practically possible. However, we have to make sure we don’t compromise the interests of Microsoft as a company. There are certain things that can range from ideas to specific implementation details that we could consider trade secrets, high-value Microsoft intellectual property or something along those lines. It *will* happen that in some cases we will not discuss a topic publicly, either for a certain term (e.g. until a proper IP protection mechanism is in place) or until we ship or ever. This is nothing new, but I haven’t seen folks from large companies discuss this explicitly before, so we wanted to make sure it is clear here.

About your feedback: We would love to hear your thoughts, be it comments, suggestions, ideas or anything else. However, in the end we are designing a commercial Microsoft product. So we’ll happily take your feedback but you need to understand that by providing us feedback in any form you are agreeing that we may use it to develop our product, that others may use it in connection with the product and that you will not be compensated for any of these things. We may incorporate ideas or make changes based on the comments you make, or we may make changes to the product that are indirectly influenced by discussions that we have with you and other folks in the community. Again, this is nothing new, but instead of having some fancy statement written in legal lingo we wanted to be upfront about this here in this first post on the topic. Of course our legal folks looked at this, and they were cool enough to understand that the informal nature of the process is what makes it work, and they let us get away with this statement in which I think we clearly delineate what will happen with whatever feedback you send our way.

We will start posting design notes and challenges soon and tweak the process as we go.

Tim Mallalieu
Program Manager, Entity Framework

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# ADO.NET team blog said on June 23, 2008 10:03 PM:

Today marks the first day of engineering for the ADO.NET Entity Framework V2.0, and the team has been

# Serioga said on June 24, 2008 3:30 AM:

Great news!

Will there be more bits for early download for MVPs?

# .NET Brainwork said on June 24, 2008 4:33 AM:

Entity Framework 2.0 development starts today

# Michael Könings Blog said on June 24, 2008 6:43 AM:

i think this and this is good news: MS takes a second try to make the ADO.NET Entity Framework a really

# Martin Laufer said on June 24, 2008 10:11 AM:

Good news!

What do You mean with "FK like experiences in the model"?

What about payload attributes in relationships?

What about n-ary relationships (n <> 2)?

What about multi valued complex types?

What about static class members?

These are the things I would like to see in EF V2. No competitor (AFAIK) can provide such and realization of the former will make EF the "best in class".

What about the conceptional asymmetry between fetching (LINQ-like) and storing (procedural)?

What about the fact, that neither the class model nor the database schema can contain as much information as the conceptual model. So deriving the classes from the database (the only thing one has is a relation! hence the name) can't succede in general (what are entities, what are relationships, what are complex types, what are enums, where to get the behaviour). And deriving the db schema from the classes (where to store the static members, how to map inheritance) can't succede either without additional information.

The missing info is stored in the conceptual model (CM)! The only way to infer either classes and db schema is deriving both from the CM! Deriving the artifacts is a PROJECTION!

So please leave the straight (not to say trivial models, with convention over configuration) to "LINQ to SQL" and please provide a mature designer for the more complex scenarios, where one needs to store complex mapping which can't be derived from either artifact.

For updating the CM out of changed artifacts, please consider instrumenting the generated assemblies with the necessary info out of the CM and find a way to incorporate this info into the db (independent of vendor!). This may reduce the effect of the projection but leads to exposition of conceptional info to end users.

Thanks for Your patience.

Kind regards

Martin

# Jorriss said on June 24, 2008 10:44 AM:

Of course this post leads to the question...When is EF v1 going to be released?

# Entity Framework Design said on June 24, 2008 3:20 PM:

Here is a raw cut and paste for our POCO 1-Pager. We are currently working through the design and have

# Blog del CIIN said on June 24, 2008 5:12 PM:

He comentado muchas veces que la velocidad de crucero que ha cogido Microsoft es imposible de seguir

# Nullable said on June 24, 2008 7:11 PM:

I realize that this has been said a few times already, but this is a great step in the right direction for the Entity Framework and Microsoft in general.

I love the Astoria team blog, and now I have another favorite new blog to keep up with and hopefuly contribute to.

P.S. -> Lazy Loading via configuration FTW!

# BlogCoward said on June 24, 2008 10:17 PM:

ADO.NET Entity Framework Vote of No Confidence

# unbornchikken said on June 25, 2008 12:02 AM:

Great news, great idea! Thank you!

I think the most important thing is to make the designer features equal to engine features. I wont use stuff in my real world application if I have to write a tons of imperspicuous XML code to have these.

A question: will EF v2 be part of .NET 4.0 or there will be an other .NET 3.5 SP release?

Regards,

Gabor Mezo

# timmall said on June 25, 2008 12:58 AM:

General Responses:

>> Early Bits

Yes we will have early bits, outside of the CTP Rhythm. We are still working on the logistics. We will likely make these more broadly available via something like code gallery than restricting just to MVP's. We need to close on the details before makign any full commitment.

>> FK experiences

We are working on being able to reason about 1-way references instead of bi-directional references. We will drop design notes on this once we have something people can throw darts at

>> More relationships (n-ary, rel'ns with payload...)

We have been looking at these, they were part of the original data model but cut due to schedule and priority. In the fullness of time we will add these. I am not sure that they will land in V2 as a lot of the focus will be on the types of things outlined in the post.

>> assymetry between fetching and storing....

Not sure what this meant.

>> designer

Yes we need to work on the designer. Yes, the transformation from the classes to the model and from the model to the store are projections. That is a key foundation upon which many of our services will be built in the future.

# lowendahl said on June 25, 2008 4:23 AM:

I would love to be able to apply cross-cutting concerns like validation and behavior to the objects returned from a query. Either by letting me hook the materialization and return objects configured by spring.net or the enterprise library or any other solution that would allow me to choose strategies for those cross-cutting concerns.

I would also like a template based experience for the designer, where one could create code templates used to generate the classes from the c-model. Something similar to what Roger Alsing is doing for NPersist: http://rogeralsing.com/2008/06/19/caramel-alpha-source-code-is-public/

That would be awesome :)

# Peter Ritchie's MVP Blog said on June 25, 2008 1:40 PM:

I had intended to be happy simply being a signatory of ADO .NET Entity Framework Vote of No Confidence

# Peter Ritchie said on June 25, 2008 1:45 PM:

This is fabulous news.  Thanks!

# Chad Myers' Blog said on June 26, 2008 8:44 AM:

I made the mistake recently of reading some of the responses to the &#39;Entity Framework Vote of No

# jeffders said on June 26, 2008 11:20 AM:

>> Cross-cutting concerns like validation

Adding more extensibility points to the object layer so that developers have more extensibility hooks is definitely an area we are looking into for v2.

>> Designer Templates

This is also something we are working towards. There are just too many code generation options to support without templates.

Jeff Derstadt

Developer

Entity Framework Team

# Entity Framework Design said on June 27, 2008 7:47 PM:

If you've been paying attention to what the Entity Framework team has been saying. You will remember

# Iga lahendus tekitab uusi probleeme ehk alati võib leida veel ühe bugi. said on July 1, 2008 4:48 AM:

.Net -i arendajate kommuuni poolt on postitatud väga asjalik "Vote of no confidence" artikkel ADO.NET

# LUTI @ Microsoft said on July 1, 2008 9:07 AM:

No início do ano eu postei um artigo chamado 2008 – O ano para alavancar sua carreira , que foi muito

# Ian Cooper [MVP] said on July 2, 2008 9:01 AM:

While I have finished my series on LINQ to SQL I wanted to talk about some of the reaction. In his summary

# Community Blogs said on July 2, 2008 3:37 PM:

While I have finished my series on LINQ to SQL I wanted to talk about some of the reaction. In his summary

# rogerj said on July 6, 2008 1:31 PM:

I see no mention of adding DML features to eSQL in v2. Having to execute INSERT, UPDATE, and DELETE commands out-of-band in the provider's SQL dialect will discourage use of the EDM in non-OO applications.

--rj

# dsimmons@microsoft.com said on July 6, 2008 8:27 PM:

Thanks for the feedback Roger.  Yes, we are aware of the value of this feature.  Unfortunately, as we look at the list of all the things that we need to do in v2 and relative priorities, it's already pretty apparent that this will have to wait for v3.  DML support in both eSQL and LINQ is important, but it is a very large set of work.

- Danny

# Eric and the .NET Framework said on July 8, 2008 9:31 AM:

The ADO.NET Entity Framework is very strategic to Microsoft - but a) it is a V1.0 technology (although

# Entity Framework Design said on July 9, 2008 4:52 PM:

The Entity Framework's provider model makes it possible for it to work over different database's. The

# Entity Framework Design said on July 21, 2008 1:18 PM:

V1 of the Entity Framework allows you to use stored procedures in two main ways: Mapping Create, Update

# Entity Framework Design said on August 1, 2008 12:26 PM:

Evolving an API to support new requirements, like POCO, while maintaining backward compatibility is challenging.

# Entity Framework Design said on August 12, 2008 3:57 PM:

In V1 of the Entity Framework it is possible to annotate a schema using attributes declared in another

# Sigurd Decroos said on August 29, 2008 5:45 PM:

Well, I've tried Ideablade's DevForce EF, it is already much more advanced than EF v1 and probably more than EF v2 will be. How difficult can it be for big Microsoft to develop a real enterprise solution with code-generator, model designers, best practices and patterns... everything combined. MM.Net from Mere Mortals, CSLA.Net, DevForce from IdeaBlase, ... They are all much more advanced than everything MS has to offer nowadays. And please, don't talk me about EntLib 4. It doesn't have the designers and felixibility 3rd party vendors has. You want a good example, look as XAF from DevExpress and where they are heading... I'm sorry, I don't believe in this v2 so fast, it will take months before the 'final' version is released and it will be dropped in the next year or 2. Adopt CSLA.Net or XPO or so, make a superb generator, wizard thingy for it with perfect N-tier samples. Then we, developers, would have something to rely on for more than 2 or 3 years.

# Entity Framework Design said on September 10, 2008 6:14 PM:

One of the most painful omissions from the Entity Framework V1 was Model First, which basically means

# Entity Framework Design said on October 8, 2008 1:05 PM:

In this post Colin Meek and Diego Vega delve into some enhancements we are planning that to LINQ to Entities,

# Entity Framework Design said on October 8, 2008 1:09 PM:

In this post Colin Meek and Diego Vega delve into some enhancements we are planning that to LINQ to Entities,

# Jonathon Cebula said on October 17, 2008 8:58 AM:

Three key things are missing from the entity framework for me, you can work around then with a bit of coding but for me these are important for a project to be expandable and for the EF to become very flexible.

First, Model inheritance, you should be able to create models that inherit from other models and can have associations with objects from other models. This would be usefull for applications that use a common base database and build on this structure.

Second, Xml datatype.

Third, dynamic columns in tables.

# girolo said on October 17, 2008 9:15 AM:

It would be great if we could known what kind of WCF Service API would be choosen to re-attach a graph of entities in a 3-tiers dettached scenario. So we could already use this API with a custom implementation and switch to EFv2 implementation latter without changing the API.

For example, is the API will looks like EntityBag<T> API ?

It will also be great if the API would not be too "Microsoft" oriented but rather technology agnostic so we could use it in an interrop scenario between a JAVA Server/.NET Client OR .NET Server/ JAVA Client

# Moon said on October 19, 2008 3:19 PM:

I'm pretty sure you know very well that ,

# Entity Framework Design said on October 27, 2008 8:33 PM:

If you are reading this, you have probably heard by now about the so called impedance mismatch between

# Entity Framework Design said on November 20, 2008 2:22 PM:

The first version of Entity Framework provides convenient ways to load, manipulate and persist objects

# Entity Framework Design said on December 2, 2008 2:44 PM:

Unfortunately in the current version of the Entity Framework, which ships in .NET 3.5 SP1, we don't make

# Andrea Bianchi said on December 4, 2008 5:10 AM:

good news this blog.

we waiting v2 early.

good job.

# Entity Framework Design said on January 8, 2009 8:55 PM:

Today the Entity Framework, and more specifically the Entity Data Model, have a limited notion of Functions.

# Entity Framework Design said on January 12, 2009 11:27 PM:

A while back I wrote a post that introduced the concept of Computed Properties . Since that time we’ve

# Entity Framework Design said on January 22, 2009 2:47 PM:

When VS 2010 ships it will include some significant improvements to our code generation story for the

# Eric's Blog said on February 18, 2009 1:50 AM:

After a year of working with LINQ to SQL, I strongly belivev that LINQ to SQL and Entity Framework (EF)

# Entity Framework Design said on March 16, 2009 4:47 PM:

Background A number of months ago we asked whether Foreign Keys (FKs) in Conceptual and Object models

# Entity Framework Design said on March 23, 2009 9:51 PM:

Background One of the biggest pieces of feedback we received from the N-Tier Improvements for Entity

# Courtois said on April 17, 2009 11:54 AM:

a nice feature will be working with several edmx:

entity1 map in in file1.edmx can inherit from entity2 map in file2.edmx.

So you can work with several models !

# Entity Framework Design said on June 10, 2009 4:06 PM:

There are currently two ways to get Entity Framework apps up and running, we call these Database First

Leave a Comment

(required) 
(optional)
(required) 
Page view tracker