I work on the Entity Framework Team at Microsoft.
Just to get the news out: The updated version of the Entity Framework Sample Provider that is compatible with .NET 3.5 SP1 Beta is now available in our Code Gallery page. From the description:
The Sample Provider wraps System.Data.SqlClient and demonstrates the new functionality an ADO.NET Provider needs to implement in order to support the ADO.NET Entity Framework Provider Manifest EDM Mapping for Schema Information SQL Generation
The Sample Provider wraps System.Data.SqlClient and demonstrates the new functionality an ADO.NET Provider needs to implement in order to support the ADO.NET Entity Framework
Update: for more details on provider API changes since the Beta3 release, you can read Jarek's post here.
We have just released a new version of the Feature CTP that works on top of Visual Studio 2010 Beta 2. I have been focusing on Self-Tracking Entities a lot lately, and so it feels great to have this out for people to try it and give us feedback on it.
The new version of Code-Only is great too.
You can see the announcement here.
Alex published today a description Colin and I wrote on a new feature the team has been working on for LINQ to Entities.
Beyond all technicalities, it is a very simple and attribute-based way of exposing any arbitrary server-side function to LINQ. It goes beyond what LINQ to SQL does with SqlMethods and it leverages our metadata system so that you don't have to specify the full mapping of parameters in the attribute.
The post itself may be a little boring ;), but the scenarios it enables are quite impressive.
Read more here.
Update: I remembered today that Kati Dimitrova and Sheetal Gupta also contributed to the document.
This new sample builds on top of System.Data.OracleClient and showcases some techniques a provider writer targeting databases different from SQL Server can use.
The code is not meant for production, just a sample directed to provider writers. It has also a few limitations related both to SP1 beta bits and with types not supported in OracleClient.
For more details, read Jarek's post.
You can download the source code from our home page in Code Gallery.
It is always busy here with all the improvements we are doing in Entity Framework to make your code work better with it. That is why I haven’t been posting to my blog much in the last months. Today however, there are two important posts from people that sit very close to me, so I am going to link to them.
Faisal posted the third part in a series on the POCO experience with EF4. His post delves into the details of how snapshot change tracking compares with notification based change tracking and on some of the API considerations for it.
Alex, who sits in my office (although he likes to think I sit in his :)) made the first post about the Code Only experience we are working on. I like to think of Code Only as “POCO on steroids”, because it not only gives you the right level of decoupling between your domain classes and the persistence framework, but it also puts mapping artifacts out of the way. I am especially fond of the way you can customize mapping using LINQ queries, although that feature is not going to be included in the first preview.
Please go read the posts, play with the bits (you will need to wait a few weeks to play with code-only) and tell us what you think!
Just a couple of links:
Colin posted a refresh today today that is compatible with .NET 3.5 SP1 Beta and includes some optimizations for the materializer using dynamic methods. Here is his post about it.
Just a short note about this: You can find his article here. I had the chance to see his presentation before he went to DevConnections in Orlando. Very much recommended stuff!
I haven’t met Beth in person but I noticed her awesome blog posts and videos focused on using Entity Framework with WPF. Very useful stuff!
One of the best learning resources I have found since I joined my team at Microsoft is this page Danny Simmons has just published. Look here for his post explaining it. If you have any further questions that are not covered or you feel are not clear enough, feel free to add your questions in comments here or even email me.
Danny already answers lots of questions everyday in the forums, and I like "learning by explaining", so give me a chance :)
With Visual Studio 2010 and .NET 4.0 very close to RTM, many of us in the team are spending more and more time brainstorming about the features and experiences that we would like to include in the next release of EF. I don’t think I need to tell how exciting that is :)
During the development of the first two versions, one of the main sources of customer feedback has been the bugs and suggestions in Microsoft Connect. Up until now, whenever you filed a bug in Microsoft Connect for Entity Framework, it would typically take a couple of days for it to be routed to our own area in out internal TFS database. But today I heard the good news that we are getting our own page in Microsoft Connect!
This will not only make our feedback channel more agile, but over time it will also make it possible for you to find all the feedback related to Entity Framework in a single place, and more easily vote for the features and capabilities that you care the most about.
Looking forward for hearing from you!
Danny and I appear to be giving inconsistent advice on this regard in our recent weekend posts:
In reality, I think we had different scenarios in mind.
Danny is talking about the general case, and he is absolutely right that the benefits of creating an encapsulated data access layer have diminished dramatically because of the Entity Framework. EF now provides a complete abstraction layer that isolates application code from the store and from schema differences.
For many applications, ObjectContext is going to be the data access layer.
But in my opinion, the benefits of the TDD approach and of Persistence Ignorance are reasons you may still want to go the extra mile. Also, there is an argument for avoiding having code that depends on a certain persistence technology all over the place.
Whether the guidelines I am suggesting are enough, I would say it is a work in progress. Roger already noticed some inconsistencies in them (I wish I knew what the inconsistencies are in his opinion!).
Moreover, Danny and I have participated in some conversations on ways to "have your cake and eat it too" when it comes to seamless use of TDD on EF.
Edit: Added some context and corrections.
My name is Diego Vega and I am a new Program Manager in the Data Programmability team.
This is my first post as a Microsoft employee!
I came here from an ISV/small software company world: A world in which data access is such an important thing as breathing, and yet, it is seldom done unconsciously or even comfortably.
At Microsoft, they (oh, should I now say "we"?) have been investing for many years in this space, trying to come up with easier approaches, more suitable abstractions, and merely better tools.
I personally think we have largely succeeded in improving our offers and in simplifying our customers job each time. From ODBC, to ADO.NET and more recently LINQ, Microsoft's contribution has been very much influential.
The latest fruit of this investment is the Entity Framework, a piece of technology that I think could affect the way we do and perceive data access in a magnitude comparable to what relational databases did more than 20 years ago.
I am very excited to be part of the team that is building this technology and I can hardly think of a better place to be at Microsoft at this time!
But as I have said, "we" (as in us, nous, nosotros) have been building this for years and "I" (as in me, je, yo) have just arrived. Only groking it well (and simultaneously learning how to be a good PM), will be a great challenge.
Therefore, I intend to use this blog as learning tool for myself, by compiling my impressions, code samples, and whatever I find pivotal in understanding the technology. In my experience, you learn more when you explain things. Can't explain why :)
Hopefully, in sharing my learning progress, I will also make a small contribution in simplifying your job.
Just a quick note on this: Our team is hiring!
If you think you have the skills and the will to improve how developers around the world deal with data in their applications, then this is a great opportunity to be in the forefront of the industry and also to become part of a nice group of geeks :)
Click here and here to read the descriptions of the positions available, both in the role of Software Design Engineer in Test.
Samir, a developer in the Data Programmability Team started blogging today.
He also published a sample application with a unique feature: It can switch between Entity Framework and LINQ to SQL for persistence. He actually uses a Strategy Pattern (my beloved one) to isolate the business logic from the persistence concern. He describes how it works here.
If that is not novel enough, his application is a graphics editor named SketchPad...
If you haven't already, look for other samples and extensions in the ADO.NET Entity Framework and LINQ to Relational Data Portal in CodeGallery.
The people I work with never ceases to amaze me!
I was in the kitchen close to my office having a coffee and mulling about what great thing I could do next about the blog. Then I came here and I saw this comment by Guillaume (a good friend in disguise), that translated from Spanish means "so, what happened since 10/23?". I guess I will try to lower the bar a bit and just tell what is happening:
Well, I have been mostly learning what it means to be a PM at Microsoft, and in particular in Data Programmability. I have been sharing my days with this group of super smart people that is working on shipping this great product (we are close to beta 3). The atmosphere is very interesting and it is easy to be overwhelmed with the heaps of information I get exposed to everyday. Not only I am learning about the Entity Framework stack but also about our LINQ implementation, about our procedures, about our branching strategies, thread modeling, driving features as a PM, filing bugs, status reports, etc.
I am waiting until I feel more confident with the stack before I do some more technical posting. I am ok with going with the basics, but I just don't want to post any inaccurate information.
In the meanwhile, life here is nice. The family is adapting very well. We have most of our stuff solved, have a car, rent an apartment on the east side. I am riding The Connector everyday to work, so I can start early and finish late with email... Which is a good thing, isn't it?
By the way, I see in Outlook that right now I have 1223 messages in my inbox and 443 in my sent items folder. Seems a little unbalanced :)
I got the news today that Ruurd Boeke, a member of the developer community, has created an Entity Framework Contrib project in CodePlex. The project home is:
The initial goal sounds like a good idea, but overall I am just very happy to see an EF Contrib project starting and I hope it will be very successful and why not, famous :)
Evidently, I cannot talk for the owner of the project, but since in his own blog post he is inviting people to contact him or leave comments:
If you are another member of the community and you planned or wished to contribute your ideas on how to extend the Entity Framework capabilities in such a community project, I encourage you to check it out and contact Ruurd and see what happens.
Today we made a huge step towards RTM. I know this is no news anymore, but well, it has been one of those days ;)
Now please, go get the bits, start creating your models with the designer. Then tweak them with some nice inheritance. Why not, taste a few EntityReaders. Generate some classes and take a look at the generated code. Get familiar with our objects and namespaces! Surround an ObjectContext in a Using statement. Plunk some ObjectQuery<T> inside. Indulge yourself with some LINQ to Entities queries. Change values here and there, add some Entities. Call SaveChanges()...
If you have been waiting to get familiar with the Entity Framework, there is no way and no reason not to start now.
BuildYourSkills() and most of all, SendYourFeedback()! :)
Something you need to learn as a Program Manager at Microsoft is how to scale. This mean that you need to drive issues, multitask, excel at doing it, choose your fights, etc.
Last week I tried a different approach that kind of worked when I was younger: stretching on the time axis. I found that it doesn't work for me as well as it used to do.
So, this is my word of advise: If you build a big backlog, and you are executing under your expectations, don't stop sleeping. Two reasons:
1. The more you sleep, the more clear your mind is when you are awake.
2. The problem is you are doing something wrong. Either you are spending much time solving the wrong problems or the expectations are too high.
So, if you are lucky enough to work in a place like Microsoft (with thousands of talented people around), do yourself a favor: Raise your hand, ask for help.