Monday, May 15, 2006

ADO.NET 3.0 Entity Framework Ephemera

Erwyn van der Meer posted "ADO.NET 3.0 - Next-Generation Data Access: Making the Conceptual Level Real" on Thursday, May 11, 2006. I was in the midst of finishing up the text and code samples for a FTPOnline .NET Development article, "LINQ Takes Shape in May CTP," so I deferred reading the resources from these links in Erwyn's post:

My mistake. All the preceding links were 404 by the weekend, exccept for "The first entry on the new Microsoft Data blog," which is empty except for default items and the word "Data." The only vestiges of the vanished content are links on MSDN Data pages from the Google cache, such as these:

However, a French reader named Sami had the presence of mind to preserve a copy of some of the missing content in the comments on Microsoft Developer Division Corporate VP Soma Somasegar's blog post about the LINQ May 2006 CTP.

Here's Pablo Castro's opening salvo for the ADO.NET 3.0 (a.k.a. ADO.NET vNext) team's "vision on data programmability."

Once you are done with shipping large products such as SQL Server 2005 and Visual Studio 2005 you'd expect to have a quiet time for a while, slow down a bit, that kind of stuff ... Turns out that it wasn't the case this time. Right after SQL Server 2005 and Visual Studio 2005 were ready to ship (and actually even before they were completely done) we started to work hard on the next version of the data programming technologies; we worked on a broad vision that spans various releases and various technologies, and also specifically on how ADO.NET plays in that vision. In the context of the vision for data programmability and ADO.NET, we decided that the next big step for ADO.NET was to move to a higher-level of abstraction. Connections, commands and readers are great for low-level stuff, but it's not exactly what you want to be dealing with continuously when writing business logic. There are other aspects that are similarly "low level" and applications have to deal with, like the actual database schemas (e.g. did you even wonder why you have to do a 3-way join just to navigate a relationship between entities instead of just saying "traverse the relationship"?). Today we're making public our vision on data programmability, it's a great read, I highly recommend it. We're also making public the specific plans for the next version of ADO.NET, a bit more technical, less formal, but with all the details of how we're moving the technology forward.

Also check out Channel 9, we've recorded a few videos that discuss the next version of ADO.NET from various angles. The first one of the series has been posted there already; it features Mike, Tim and myself talking about what we've been working on for the next version of ADO.NET, including some high-level descriptions, details on the various services that are being introduced and some live demos. Sam, the product unit manager for the data programmability team in Microsoft, has posted a blog entry that introduces the vision and the first round of concrete innovations around it. Feedback on all of this stuff is welcome. I highly encourage folks to check out all of the content we're putting out there and write us with your thoughts. Pablo Castro ADO.NET Technical Lead Microsoft Corporation

Sami also provided a copy of the text that introduced the O-R mapping tool demo screencast:
So, Now that we are talking about the upcoming ADO.NET Entity Framework, I thought it would be interesting to do a screencast on our mapping infrastructure. If you have seen our vision on data programmability you will see that one of our investments is in using view maintenance technology to replace the common case-by-case mapping scenarios that ORM solutions typically employ. Feel free to take a look at the screencast to see examples of us modeling and mapping simple inheritance, complex types and entity splitting. In future screencasts I will go into more detail about our metadata infrastructure, modeling and more on mapping. We look forward to hearing your feedback! Tim M Program Manager, Data Programmability

It's unfortunate that the whitepapers, video, blog posts and screencast received so much publicity while extant. More than 2,150 folks had watched the "What's coming in ADO.NET?" video before it disappeared from Channel 9. The LINQ, DLinq, and XLinq keywords are missing in both quoted posts. Jimmy Nilsson says, "I'm not sure if we will see both DLinq and EDM because DLinq isn't mentioned at all in the [ADO.NET Tech Preview: Overview]." There's no mention of an "ADO.NET 3.0 Entity Framework" in the LINQ May 2006 CTP documentation.

The obvious question is: Are the ADO.NET Entity Framework, LINQ, DLinq, and XLinq teams reading from the same playbook? Let's hope so. At the moment, however, it appears that only time will tell. May 17, 2006 Update (thanks to Fabrice Marguerie): The current outlook for DLinq in the "ADO 3.0 Entity Framework" isn't too bright. Here's most of Jim Wooley's post in the LINQ Project General newsgroup's "DLinq vs. ADO.NET vNext" thread:

From what I recall, the ADO appeared to abandon all of the strong typing mechanisms that are present in LINQ and take a step back into creating dynamic SQL that mapped to dynamic object entities. We would then need to map the intermediary entities into DLinq entities if we wanted to take advantage of the functionality in LINQ.

I understand the challenges in working with n-level object trees and mapping them to relational data stores, taking into account polymorphism. From my initial read of the ADO.Next documentation, I didn't get the feeling that they were headed in the right direction. Hopefully the next document will be more encouraging.

Here's another question: How much time will be required to rationalize these two—apparently very dissimilar—approaches? Technorati Tags: , , , , , , , ,