Showing posts with label XLinq. Show all posts
Showing posts with label XLinq. Show all posts

Monday, January 22, 2007

More LINQ to XSD Rumblings

It's been quiet on the LINQ to XSD (a.k.a. "l2xsd") front since Microsoft Data Programmability Team program manager Ralf Lämmel announced the public preview on November 27, 2006 with the release of the Alpha 0.1 version.

Mike Champion gave LINQ to XSD a boost in his "Convergence Zones" 2007 preview for the future of XML post:

The better the XML is hidden, the more the bulk of the world likes it. Being out of sight, it's also out of mind. Few noticed that "Asynchronous JavaScript And XML" actually refers to the XmlHttpRequest API much more than XML content, so the substitution of JSON for XML as the typical bits on the wire format caused little concern. Actually that understates the case—most people are happy to use more familiar technologies instead of XML or in front of XML. What might we predict from this pattern?

  • I'll make a (self serving!) prediction that the LINQ approach of focusing on what is common across data formats will get more mainstream traction than will the notion that users want specialized tools for their XML data.
  • Tools that make it relatively easy to consume XML directly into programming objects such as LINQ to XSD will continue to mature technically and be adopted by pragmatic developers.

Helping LINQ to XSD to "continue to mature technically" is a new technical paper, "Programming with Triangular Circles," by Ralf Lämmel and Dave Remy, presented at the XML 2006 conference in Boston on December 5, 2006. Here's the introduction and abstract:

When deriving object types from schema types, developers are impaired by the infamous X/O impedance mismatch. We deliver a typed programming approach for XML that greatly reduces the impairment by leveraging rather than abandoning XML semantics.

Given the capabilities of OO programming, its maturity and generality, it is a sane expectation to adopt OO as the paradigm of choice for XML processing. To serve that expectation, one would map XML schemas to object models so that XML data can be processed through familiar objects. The first generation of mapping technologies has been somewhat disappointing and the term X/O impedance mismatch has been coined in this context. By devising a mapping that caters for XML-aware objects as typed views on untyped XML trees (as opposed to plain objects with fields), and by leveraging functional OO programming, one can actually deliver on the expectation to adopt the (enriched) OO paradigm for XML processing.

Ralf's "Style Normalization for Canonical X-to-O Mappings" paper for the ACM SIGPLAN 2007 Workshop on Partial Evaluation and Program Manipulation (PEPM 2007), held in Nice, France, on January 15 and 16, 2007 tackles "normalization of schema-organization styles and its support by automated transformations." Here's the first paragraph of the Introduction and the abstract:

This paper deals with the overall problem of mapping XML schemas to object models. (We use the term X-to-O mapping from here on.) More specifically, this paper devises transformations for normalizing styles of schema organization as a separate aspect of X-to-O mappings. This separation of concerns is helpful in attacking the so-called X/O impedance mismatch—the overall difficulty of viewing domain-specific XML data as objects of a schema-derived object model in a satisfactory manner.

An X-to-O mapping takes an XML schema as input and returns an object model as output; this object model is meant for programmatic, schema-aware access to XML data. The provision of X-to-O mappings involves various challenges; one of them is addressed by the present paper: variation in style of schema organization, which should not unduly affect the outcome of X-to-O mappings. We devise transformations for style normalization (and conversion); these transformations operate at both levels of the X-to-O mapping: schemas and object models. An important byproduct of the present work is to showcase functional OO programming as a viable setup for devising software transformations.

Ralf also presented at XML 2006 the LINQ to XML-based "API-based XML Streaming with FLWOR Power and Functional Updates" paper with this introduction and abstract:

We enable streaming for an in-memory XML API so that a convenient (declarative) programming model is preserved. Some restrictions are to be imposed on the streaming mode of the API, thereby achieving also predictability and controllability of the streaming power.

The size of XML trees that can be processed by an XML API for declarative, in-memory processing is bound by the available memory. As a result, certain scenarios involving huge trees or many processes on large trees may fail to be feasible with (declarative) in-memory processing; lower-level APIs for XML parsing and unparsing must be reconsidered. As a remedy, we enable streaming for an in-memory XML API so that the convenient (declarative) programming model of the baseline API is preserved. Some restrictions are to be imposed on the streaming mode of the API, thereby achieving also predictability and controllability of the streaming power. The presented development uses LINQ to XML (formerly called XLinq) as the baseline API and works out one particular API extension for a streaming-enabled LINQ to XML API. As an important byproduct of this effort, functional updates are proposed, which complement the existing, imperative updates of the LINQ to XML API.

Lets hope both these technologies make Visual Studio's Orcas release. A post RTM add-on might suffice for the streaming API, but LINQ to XSD definitely deserves the resources required to make the VS vNext cut.

Technorati Tags: LINQ to XSD, LINQ to XML, XLinq, C# 3.0, VB 9.0, XML, XSD, XML Schema, Orcas

Friday, January 12, 2007

Microsoft Releases Orcas January 2007 CTP

Microsoft posted on January 10, 2006 at about 8:30 p.m. PST the long-awaited Microsoft Pre-release Software Visual Studio Code Name "Orcas" - January 2007 Community Technology Preview (CTP), formerly known as the Orcas December 2006 CTP. The download is available as an extractable executable, consisting of VSDec2006CTP.part1.exe and six VSDec2006CTP.part#.rar files (4.21 GB). Alternatively, you can create a Virtual Server 2005 or Virtual PC 2004 image (.vhd file) by combining the self-extracting base image (VSCTPBase.exe, 1.12-GB) with VSDec2006CTP.part01.exe and seven VSDec2006CTP.part0#.rar files (4.91 GB). Notice the 0 prefix that distinguishes the executable from the virtual server files. The Virtual Server OS is Windows Server 2003 Enterprise Editon SP1, not Windows server 2003 R2. The virtual machine files extract to Base01.vhd (2.86 GB), VSDec2006CTP.vhd (11.45 GB), and VSDec2006CTP.vhc (13 kB). Starting the virtual machine adds Base01.vmc (11 kB) and VSDec2006CTP.vsv saved-state file (1.51 GB). Thus you need about 22 GB of free disk space for starters.

Orcas January CTP Shortfalls

The January CTP's LINQ components (especially LINQ to SQL) aren't fully cooked, as evidenced by the following comment from a January 12, 2006 post to Charlie Calvert's C# Community Blog:

This build of Orcas has good support for LINQ to Objects and only shaky support for LINQ to SQL. There has, however, been good support for LINQ To SQL in the internal builds I've seen in the last few days. These internal builds all target the February CTP.

The January 2007 CTP Release Notes state:
  • ADO.NET Entities in this current drop do not support LINQ—The private CTP of ADO.NET (ADO.NET August CTP) does offer a preview of LINQ integration but that functionality does not work with the Orcas January 2007 CTP.
  • No ADO.NET tools support for the Orcas January 2007 CTP—There is a publicly available ADO.NET Tools CTP. Please note these tools work with the ADO.NET August CTP and not the Orcas January 2007 CTP.
  • You can’t import Whidbey SDM Designer files in Orcas—No workaround is available for this issue.
The "Overview" section of the download page states that the January CTP includes SQL Server Compact Edition; it doesn't. You'll find that the CTP installs a Microsoft SQL Server Everywhere Edition\v3.5 folder that contains outdated Sqlce*30.dll runtime files, not the Sqlce*31.dll files from January 2007's SQL Server 2005 Compact Edition Web (RTM) release. However, Visual Studio's Choose Data Source dialog opened from the Data Source Configuration Wizard does have an SQL Server 2005 Compact Edition choice. Erwyn van der Meer raises the issues of missing developer support for .NET 3.0—no documentation, project templates, or visual designers—or AJAX in ASP.NET. He also found that the WPF, WCF, and CardSpace versions are close to 200 builds earlier than RTM. Note: The Release Notes also describe the numerous problems that occur if you install the "VS 2007" bits side-by-side on a machine running VS 2005. There are three references to "VS 2007" in the Release Notes; Add/Remove Programs includes "Microsoft Document Explorer 2007" and "Microsoft Visual Studio 2007 Tools for Office Runtime," which would indicate that the Orcas team is confident of releasing VS vNext this year. .NET Framework 3.5 (GreenBits) is a 9.62-MB addition to .NET Fx 3.0. Data-intensive developers might want to delay extensive testing of LINQ features (other than LINQ to Objects) until the Orcas February [?] 2007 CTP. Installation Issues with Virtual Server 2005 R2 I attempted to install the extracted bits on the Virtual Server 2005 R2's Windows Server 2003 R2 standard edition in accordance with the download page's instructions. However, the following virtual machine setup instructions for Virtual PC 2003 don't work with Virtual Server 2005 R2. 6. Click the New button to launch the “New Virtual Machine Wizard”. 7. Navigate to the Options page and select "Add An existing Virtual Machine" radio button. 8. Click the Browse button and navigate to the location you extracted the files to and select VSODec2006CTP.vmc [sic] image 9. You will be prompted for the location of the base image and you should point to the Base01.vhd that you extracted earlier and click OK 10. Clear the “When I finish, open settings” checkbox and click OK 11. Select the new image entry and click Start You receive a message such as the following when you attempt to start the virtual machine:

Note: Click the images for full size versions or click here for a Web page with a set of larger images.

To set up the virtual machine on Virtual Server 2005 R2, substitute these steps after extracting the :

1. Click the Virtual Machine group's Add button to open the Add Virtual Machine page.

2. Type the d:\full path\VSDec2006CTP.vmc file in the Fully Qualified Path to File text box:

3. Click Add to create the new virtual machine from VSDec2006CTP.vmc.

4. Click the Virtual Disk group's Inspect button to open the Inspect Virtual Hard Disk page, and select d:\full path\VSDec2006CTP.vmc from the the Known Virtual Hard Disks list.

5. Click Inspect to open the "VSDec2006CTP.vhd" Virtual Hard Disk Properties page, which displays the error message in the Parent Virtual Hard Disk(s) text box:

6. Click the red error message to open the Update Virtual Hard Disk Parent page, and select the d:\full path\Base01.vhd item in the Parent Virtual Hard Disk Path text box:

7. Click Update Parent Path to return to the "VSDec2006CTP.vhd" Virtual Hard Disk Properties page, which now shows d:\full path\Base01.vhd in the Parent Virtual Hard Disk(s) Path text box.
8. Click Master Status. If VSDec2006CTP doesn't appear in the Remote View list, click Add, select d:\full path\VSDec2006CTP from the list, and click Add. 9. In the Master Status page, hover the mouse over VSDec2006CTP and select Configure to open the configureation page. Set the Memory, CD/DVD and Network Adapters values. 10. Hover the mouse over VSDec2006CTP and select Turn On. After a minute or two, Windows Server 2003's logon dialog appears. 11. 13.306 isn't the correct set of Virtual Machine Additions for this relase, so click Virtual Machine Additions to open the page of the same name, mark the Install Virtual Machine Additions check box and click OK. 12. Click the thumbnail to turn on remote operation. Type your Administrator credentials to open the "VSDec2006CTP" Remote Control page. 13. Log on with Right Alt + Del, accept Administrator as the user name and type P2ssw0rd as the password.

New LINQ Resources While you're waiting for the Orcas February 2007 CTP, take the time to explore these new LINQ-related resources:

Microsoft's Wes Dyer has produced an eight-part treatise on LINQ queries:

  1. Comprehending Comprehensions—What are queries? How are queries treated by the compiler?
  2. Transparent Identifiers—How are local variables introduced by queries?
  3. Thus Quoth the Humble Programmer—What are expression trees? What are lambdas translated into?
  4. Reading and Writing Queries—What mental models are useful in reading and writing query expressions? What are the scoping rules for queries?
  5. A Model for Query Interpretation—How can we think about query evaluation? Is it possible to think of queries in terms of the queries and not the rewrites? What is the conceptual model for Linq to Objects queries?
  6. How Linq to Objects Queries Work—What causes Linq to Objects queries to be lazily evaluated? How are the results computed? What underlies the conceptual model for Linq to Objects? Why do queries exhibit their debugging behavior?
  7. Having Trouble with Queries—What constitutes good error messages? How are effective error messages for queries generated in the face of type inference and significant syntactic sugar?
  8. Another Model for Query Interpretation—Are there other models for query interpretation besides an imperative one? Why are some queries declarative and others not?

Eric Lipper discusses lambdas in the following two recent posts:

Australian .NET developer Troy Magennis's Hooked on LINQ wiki is up to 88 pages. All of the preceding resources are C#, but the query syntax is quite similar in VB.

Updated: January 15, 2007

Technorati Tags: Orcas, ADO.NET vNext, Entity Framework, Entity Data Model, LINQ, LINQ to Entities, LINQ to XML, LINQ to SQL, Entity SQL, eSQL, DLinq, XLinq, C# 3.0, VB 9.0

Friday, December 22, 2006

Orcas December 2006 CTP Delayed to January

A new "Notes on the January CTP" post on Charlie Calvert's (C#) Community Blog this morning (12/22/2006) announced a delay in long-awaited Orcas December 2006 CTP. Here's Charlie's explanation:

The January CTP (formerly known as the December CTP) should be out shortly after the new year. We are sorry about the delay; it is due in part to the huge December 14 storm that knocked out the power for over a million residents here in the Seattle area.
According to Charlie's updated "Community Convergence XV" post, the January 2007 CTP will drop "the first week of January." Note: .NET Framework 3.5 now appears to be the official Orcas version. The new System.Core.dll, System.Xml.Linq.dll and System.Data.Linq.dll files will be located in a \Windows\Microsoft.NET\Framework\v3.5.nnnnn\ folder. To prepare developers for the overdue CTP, Charlie has posted (unofficial) pending updates to the May 2006 CTP for:
  • Syntax and Reference Changes
  • Project File Changes
  • Array or Collection Initializers
  • Other API Changes
The most significant changes are to replace Imports System.Query with one or more of these Imports directives: System.Linq, System.Xml.Linq, or System.Data.DLinq. Following are links to earlier OakLeaf posts on the former December 2006 CTP: Stay tuned for further developments. Technorati Tags: Orcas, ADO.NET vNext, Entity Framework, Entity Data Model, LINQ, LINQ to Entities, LINQ to DataSets, LINQ to SQL, Entity SQL, eSQL, DLinq, XLinq, C# 3.0, VB 9.0

Monday, December 18, 2006

Missing LINQs in Orcas December 2006 CTP

It appears that the impending Orcas December 2006 CTP won't incorporate several important elements of the LINQ May 2006 CTP. According to the "The December Orcas CTP and SP1" topic of Charlie Calvert's December 18, 2006 post, Community Convergence XV, the December 2006 CTP will include "many of the features from the May LINQ CTP," specifically "most of the LINQ to Objects feature set." Update 12/29/2006: The Orcas December 2006 CTP has moved to January 2007. See Orcas December 2006 CTP Delayed to January. Charlie goes on to say:

In the February CTP, the team aims to complete the process by adding support for LINQ to SQL, LINQ to Entities and the LINQ Designer. ... The May LINQ CTP still contains some features, notably LINQ to SQL, which are not likely to be part of the December Orcas CTP. [Emphasis added.]
The probable absence of LINQ to SQL from the Orcas December 2006 CTP indicates to me that the ADO.NET team's entire Entity Framework, which includes LINQ to SQL, LINQ to Entities, Entity SQL (eSQL), and the Entity Data Model Designer, might be missing from this CTP. I quoted Pablo Castro in my Orcas December 2006 CTP Coming with New LINQ/EDM Bits post:

As we make progress on the Orcas release of Visual Studio, the various teams—including ourselves—are working hard at integrating everything in a single product, Visual Studio Orcas. For the ADO.NET Entity framework this means that you won’t see component-specific CTPs any more for Orcas, and instead you’ll see Orcas CTPs that have all these technologies incorporated. We may still do separate CTPs of related technologies if we see that it would help at some point in time.

Also, since the ADO.NET Entity Framework is in the Orcas builds, we don’t need the generic “vNext” token for it; from now on we’ll refer to it simply as ADO.NET Orcas, which will include the ADO.NET Entity Framework and LINQ to ADO.NET in its various flavors (LINQ to DataSet, LINQ to SQL and LINQ to Entities).

The handwriting on the wall says we might need to wait for the February CTP to see an update to the ADO.NET vNext August 2006 CTP.
If you want to continue to work with LINQ to SQL, you'll need to run the LINQ May 2006 under VS2005. It appears that newly-released VS 2005 SP1 and the LINQ May 2006 CTP have created their own version of DLL Hell. You should install the LINQ May 2006 CTP bits after installing VS 2005 SP1. In his Installing Visual Studio 2005 Service Pack 1 and the May LINQ CTP post, Charlie suggests that you:
  1. Remove the LINQ May 2006 CTP bits
  2. Remove pre-RTM VS 2005 SP1 if you've installed a beta or CTP
  3. Install VS 2005 SP1 RTM version
  4. Install LINQ May 2006 CTP
If you're running under Windows Vista, the VS 2005 SP1 download page says:
For developers using Visual Studio 2005 on Windows Vista, Microsoft is in current development on an update to Service Pack 1 called the 'Visual Studio 2005 SP1 Vista Refresh Beta’. This update builds on the improvements made in SP1 and delivers a first class experience for developers wanting to take advantages of the new features in Windows Vista. The Visual Studio 2005 SP1 Update for Windows Vista is expected to ship after the consumer availability of Windows Vista in Q1 of 2007 and is now available in beta.
As of December 18, 2006, Visual Studio 2005 SP1 Update for Windows Vista Beta is "not available" from the download site. The Visual Studio 2005 SP1 Update for Windows Vista Beta reappeared on December 20, 2006. Technorati Tags: Orcas, ADO.NET vNext, Entity Framework, Entity Data Model, LINQ, LINQ to Entities, LINQ to DataSets, LINQ to SQL, Entity SQL, eSQL, DLinq, XLinq, C# 3.0, VB 9.0

Saturday, December 09, 2006

Jon Udell Moves from InfoWorld to Microsoft

Veteran technology writer, analyst and eclectic Web developer Jon Udell will cease writing his "Strategic Developer" column and "Jon's Radio" blog for IDG's InfoWorld magazine on December 15, 2006. After a month's hiatus, he'll start his new job as a Microsoft "evangelist for the Net." Jon will report to Jeff Sandquist who runs Microsoft's Channel9 and On10 sites. Jeff Sandquist is Robert Scobel's former boss. Note: Robert worked for Fawcette Technical Publications when I wrote my first article for Visual Basic Programmer's Journal, now Visual Studio Magazine. Jon described his future activities at Microsoft on December 8, 2006 in A conversation with Jon Udell about his new job with Microsoft:

That means blogging, podcasting, and screencasting on topics that I think are interesting and important; it means doing the kinds of lightweight and agile R&D that I've always done; and it means brokering connections among people, software, information, and ideas—again, as I've always done.
He went on to clarify his role and expectations in a new JonUdell WordPress blog. He'll continue working from his office in Keene, NH and spend about one week per month in Redmond. Jon as an XML Evangelist I worked with XML Web services in the early .NET 2002 days, wrote a book on the topic and ended up one of the winners of a Microsoft .NET Web Services contest. But it was Jon's early promotion of semi-structured XML for data interchange that got me interested in XML as a data-interchange format with Jean Paoli's InfoPath and resulted in my writing Introducing Microsoft Office InfoPath 2003 for Microsoft Press. Over the almost five-year period from 1/3/2002 to 11/15/2006, Jon wrote 148 columns, blog posts, analyses, and reviews that contained the term XML. Note: I ran this InfoWorld power search to return a table with rows for each article, imported the table into Excel and then into Access to improve searching and sorting. Jon's articles and posts on XQuery encouraged me to abandon Transact-SQL for a few days and try Microsoft's original XQuery implementation for .NET 1.0—an interactive preview of and downloadable code for the Microsoft.Xml.XQuery classes, which was at http://131.107.228.20 in mid-2002. The interactive demo—shown in the screen capture below—and its use cases worked well enough that I wrote a "Get Ready for XQuery" article and a downloadable .NET Web form app for Fawcette's XML & Web Services Magazine (free registration required for page 2 and beyond).

(Click screenshot above for full-size image.)

Jon's November 15, 2006 "Strategic Developer" column, XQuery and the power of learning by example, stresses the importance of use cases as XQuery tutorials and laments the lack of use cases in Extensible Business Reporting Language (XBRL). Notice the start of a list of W3C Use Cases in the left frame of the preceding Web page.

Microsoft's removal of XQuery support from .NET 2.0 was a major disappointment for me, but the SQL Server 2005 xml data type's XQuery support compensates—at least in part—for its 11th-hour excision from the .NET Framework. Jon's April 26, 2005 A conversation with Michael Rys about SQL Server 'Yukon' blog post provides a succinct overview of SQL Server 2005's XML and XQuery support and is a great companion piece to my slightly earlier "Exploit Yukon's XML Data Type" article. Jon's other XQuery articles greatly influenced Chapter 12, "Exploring the XML Data Type," of Expert One-on-One Visual Basic 2005 Database Programming.

Note: Now that XQuery 1.0 is a W3C Proposed Recommendation, hopefully Microsoft will implement the missing Let keyword and incorporate the XQuery classes as an Orcas add-on to the .NET Framework. Although LINQ to XML (formerly XLinq) and LINQ to XSD (a.k.a. LINQ to XML Objects) has a more elegant, SQL-like query syntax, XQuery is finally closing in on Recommendation status. Jon on Language Integrated Query (LINQ) Jon was one of the early proponents of Microsoft's LINQ technologies. He first wrote about LINQ in his September 13, 2005 An interview with Bill Gates from PDC 2005 blog/podcast, which includes a transcription. His initial take on LINQ:

The biggest round of applause, I think, went to Anders Hjelsberg, whose LINQ technoloogy was shown issuing SQL-like queries, as native C# syntax, to query in-memory CLR objects, to query SQL tables, and to perform joins between both. On the XML side, LINQ was used to construct XML, though not to query it—I'll want to ask Anders about that when we meet later this week.

He followed up with a September 21, 2005 Microsoft driving toward .Net unity "Strategic Developer" column based on PDC 2005 presentations:

LINQ is an extraordinary innovation that turns traditional query inside out. But the bigger story from PDC 2005 is that the .Net vision of unifying many balkanized disciplines within the Microsoft ecosystem is finally becoming a reality.

His LINQ 101 blog post a week later demonstrated the code for a three-way join across an XML data source and two CLR objects. His conclusion:

Could you the same thing in XQuery? Sure, given three sources of equivalent XML data. And in fact the preview includes implementations of the XQuery use cases. LINQ's home base, though, is the domain of CLR objects. From there it extends its generalized query operators into the realms of objects, XML, and relational data. All of the capabilities of the .NET Framework are available within -- and across -- these contexts. What's more, you can invent new query operators using C# and the Framework.

When I said that LINQ turns query inside out, I wasn't kidding. There is a lot here to think about and explore.

Jon got his chance to interview Anders Hjelsberg for his May 12, 2006 A conversation with Anders Hejlsberg about the May 06 preview of LINQ podcast (with transcript). Here's Jon's conclusion:

I'm not certain myself how much of LINQ is genuinely new, and how much is a creative synthesis of pre-existing ideas, but I do know that I'm fascinated by what it can do and where it might go. Its reach will ultimately be determined by the extent to which non-Microsoft databases of all flavors—relational, object, XML—are willing and able to plug into the LINQ framework. To that end, one of the most significant points in today's interiew is the announcement of IQueryable, an interface that formalizes how providers plug into LINQ. Watching the uptake of this mechanism by third parties over the next year or so will tell us a lot about whether LINQ will be a Microsoft-only phenomenon or something that more broadly influences the industry.

Well said. I'd like to hear Jon's thoughts on LINQ for XSD, despite it's Alpha 0.1 preview status, and PLINQ, which doesn't yet have a publicly available implementation.

So here's hoping that Jon won't expend all his Channel9 and On10 efforts on the Web, social networking, public libraries, and the like, but will continue evangelizing XML, XSD, XSLT, XQuery, and LINQ and analyzing trends in these technologies in his new role at Microsoft.

And here's wishing Jon best of luck at Microsoft. As I said in my comment to Jon's blockbuster post: "It’s by luring folks of your stature that Microsoft succeeds."

Technorati Tags: Jon Udell, XML, XSD, XML Schema, XQuery, LINQ to XSD, LINQ to XML Objects, LINQ to XML, XLinq, LINQ to SQL, DLinq, C# 3.0, VB 9.0, Orcas

Note: I've added a Jon Udell tag to all OakLeaf blog posts the mention Jon.

Thursday, December 07, 2006

Reduce Object/XML Impedance Mismatch with LINQ to XSD

LINQ to XSD from Microsoft's XML Team promises a similar reduction of the impedance mismatch between .NET objects and XML documents as LINQ to Entities and ADO.NET 3.0's Entiry Framework and Entity Data Model deliver for objects and relational data.

LINQ to XSD, which entered the public preview state on November 27, 2006 with the release of the Alpha 0.1 version, builds on LINQ to XML's generic XML trees to operate on typed XML trees, which are "instances of .NET types that model the XML types of a specific XML schema (XSD)." Thus LINQ to XSD carries the subtitle "LINQ to XML Objects."

Note: If you don't want to download the preview bits, which require the Microsoft .NET LINQ CTP (May 2006), read the "LINQ to XSD Overview: An Incubation Project on Typed XML Programming" white paper.

Updated: February 7, 2008

A First Look at LINQ to XSD Syntax

The XML Team's blog post and documentation for the LINQ to XML preview cites this prototypical LINQ for XML query that returns the total value of Item elements in in a purchaseOrder document:

(from item in purchaseOrder.Elements("Item") select (double)item.Element("Price") * (int)item.Element("Quantity")).Sum();

Here's the strongly typed LINQ to XSD version of the preceding query:

(from item in purchaseOrder.Item select item.Price * item.Quantity ).Sum();

Obviously, the type-safe version of the query's syntax is clearer. It also provides Intellisense for elements and corresponds more closely to a LINQ to SQL query against a purchaseOrder table with a related Item table.

Aside from the obvious syntatical benefits and compile-time vs. run-time syntax checking, LINQ to XSD supports contract-first rather than code-first development. Many Web services developers are contract-first devotees, but Dare Obasanjo—one of Microsoft's foremost XML/XSD gurus—recommends the code-first approach in his April 22, 2005 "Contract-First XML Web Service Design is No Panacea" post.

Note: Click here for a list of Dare's technical papers, articles, and other writings as of May 2005.

LINQ to XSD can handle code-first (or, more properly, document-first) design by inferring and refining XML schemas from existing XML documents with the Microsoft XSD Inference 1.0 tool. My "Generate XSD Schemas by Inference" article for the November 2002 issue of XML Magazine explains how to get the most out the tool. (Free registration is required to read page 2 through 4).

O/X Impedance Mismatch Background

My September 25, 2005 post, "More on Object-XML and Object-Relational Impedance Mismatch," cited Dare's "The Impedence Mismatch between W3C XML Schema and the CLR" post, which discusses XML serialization of object state and conversion of XML to objects. Dare suggests his earlier "XML Schema Design Patterns: Is Complex Type Derivation Unnecessary?" post and the "Programming with Circles, Triangles and Rectangles" paper by Gavin Bierman, Wolfram Schulte and Erik Meijer for more details on X/O impedance mismatch issues. This paper extends an earlier presentation to the Workshop on Declarative Programming in the Context of OO Languages (DP-COOL) 2003—Unifying Tables, Objects and Documents by Eric Meijer and Wolfram Schulte.

Note: The BSM trio also presented "LINQ: Reconciling Objects, Relations and XML in the .NET Framework" to SIGMOD 2006. Unfortunately, only the first page is available for download.

Apparently, Erik and his colleagues are sanguine that the longstanding issues with X/OM (XML-to-Object mapping) can be resolved. He and Data Progammability Team program manager Ralf Lämmel authored "Revealing the X/O Impedance Mismatch" (July 19, 2006 draft) for submission to and possible publication in the post-proceedings for Datatype Generic Processing (DPG '06), Lecture Notes in Computer Science (LNCS, Springer US). The paper begins with an excerpt from Dave Thomas's "The Impedance Imperative: Tuples + Objects + Infosets = Too Much Stuff!" article for the September-October 2003 issue of the Journal of Object Technology.

Another paper, "Mappings make data processing go ’round: An inter-paradigmatic mapping tutorial," by Erik and Ralf (2005) starts with the same Dave Thomas quotation. The abstract describes the tutorial's objective:

Each data-processing application depends on a horde of interrelated data models and artifacts that are derived from data models (such as data-access layers). Such conglomerations of data models are challenging due to paradigmatic impedance mismatches, performance requirements, loose-coupling requirements, and others.

This ubiquitous problem calls for a good understanding of techniques for mappings between data models, actual data, and operations on data. This tutorial lists and discusses mapping scenarios, mapping techniques, impedance mismatches and research challenges regarding mappings. [Emphasis added].

Note: Dave Thomas and Erik Meijer are speakers for the QCon Conference to be held March 12 - 16, 2007 in London. Erik and Martin Fowler are among the conference's keynoters.

Ralf presented two papers at XML 2006 on December 5, 2006: "Typed XML programming without abandoning XML" (a.k.a. "Functional OO Programming with Triangular Circles" with Dave Remy as co-author) and "XML streaming, XML trees and XML queries—Can they co-exist in harmony?" (by Michael Champion). Mike chaired the Enterprise XML Computing sessions and provides a blow-by-blow description of the December 5 and part of the December 6 sessions in his XML 2006 Observations post.

Note: Dave Remy said on June 16, 2006: "I am now working hands on a very cool XML developer tool (can't say specifically what quite yet) that uses WPF (also known as Avalon) and XLinq extensively. I look forward to doing some future blogs in these areas." (To my knowledge, no future blogs on the topic appeared as of early 2008.)

Charting the Course of LINQ to XSD in Orcas

The more general tutorial, "Mappings make data processing go 'round—An inter-paradigmatic mapping tutorial," "... lists and discusses mapping scenarios, mapping techniques, impedance mismatches and research challenges regarding mappings" with the emphasis on O/RM and X/OM. This paper is included in the Summer School Proceedings of the Generative and Transformational Techniques in Software Engineering (GTTSE) 2005, of which Ralf was an organizer.

Ralf offers the "XML Typed Programmer" quartet with the following posts, some of which are quite detailed (i.e., lengthy):

Note: The current LINQ to XSD implementation is C# 3.0 only, which is surprising when you consider Erik's penchant for Visual Basic and his recent VB IsNot C# seminar at Expo-C 2006.

Tech support for LINQ to XSD is from the XML and the .NET Framework newsgroup, not the expected LINQ Project General newsgroup.

LINQ to XSD is an "incubator" project and the preview comes with a "While the underlying LINQ to XML technology is expected for Orcas, no such commitment exists for LINQ to XSD" caveat. But it seems to me that LINQ to XSD is a necessary addition to mainstream LINQ to SQL (formerly DLinq) and LINQ to XML (formerly XLinq) APIs, and developing LINQ to Entities and LINQ to DataSets technologies. Without LINQ to XSD, the final Orcas LINQ implementation will be incomplete.

Updated: 12/8/2006 and 12/11/2006 Minor additions and corrections. Reformatted: 2/7/2008.

Technorati Tags: LINQ to XSD, LINQ to XML Objects, LINQ to XML, XLinq, C# 3.0, VB 9.0, XML, XSD, XML Schema, Orcas, Domain-Specific Languages, DSL, DSL Tools

Saturday, November 25, 2006

Orcas December 2006 CTP Coming with New LINQ/EDM Bits

Visual Studio Orcas CTPs will replace ADO.NET vNext CTP drops starting with the Orcas December 2006 CTP. Charlie Calvert, Microsoft's Community Program Manager for the C# group, reports in his November 21, 2006 Community Convergence XII post:

The Orcas December CTP will contain new LINQ bits. The team has been churning out daily builds filled with new LINQ content. Over the next weeks it will all come together in a CTP that will be released to the public. This will be the first major update to the LINQ bits since the May CTP. The first Orcas beta is not due until 2007.
Charlie's post follows ADO.NET Technical Lead Pablo Castro's November 7, 2006 ADO.NET Orcas and Samples item:

As we make progress on the Orcas release of Visual Studio, the various teams—including ourselves—are working hard at integrating everything in a single product, Visual Studio Orcas. For the ADO.NET Entity Framework this means that you won’t see component-specific CTPs any more for Orcas, and instead you’ll see Orcas CTPs that have all these technologies incorporated. We may still do separate CTPs of related technologies if we see that it would help at some point in time.

Also, since the ADO.NET Entity Framework is in the Orcas builds, we don’t need the generic “vNext” token for it; from now on we’ll refer to it simply as ADO.NET Orcas, which will include the ADO.NET Entity Framework and LINQ to ADO.NET in its various flavors (LINQ to DataSet, LINQ to SQL and LINQ to Entities).

The December CTP release undoubtedly will integrate updated versions of the the ADO.NET Entity Framework from the October 2006 Orcas CTP and its sample code plus the the August 2006 ADO.NET vNext CTP's Entity Data Model (EDM) designer prototype.


Here's the latest (December 8, 2006) update on the Orcas December CTP 2006 release from the Visual C# Community Center:
The December Orcas CTP will be released soon. This CTP will be a regular install, and will not ship inside a Virtual Machine. It will co-exist with Visual Studio 2005. The main feature in the CTP will be the ability to work with LINQ. These will be the first new LINQ bits we have seen since the May CTP. The December CTP is a pre-beta release. The Orcas Beta is not expected until sometime in 2007. The team is also near the release of Service Pack 1 for Visual Studio 2005. Right now, I'm still exploring this issue, but I've heard that the order in which we install Service Pack 1 and the LINQ May CTP may be important. The reports I'm hearing at this time suggest that we should install the service pack first, and then the May CTP. I should have more information on this issue by the end of the week.

I believe Charlie meant "December CTP" where he mentions "May CTP" in the preceding paragraph.


Charlie has posted the first four five installments of The LINQ Farm, a series of articles for beginning LINQ C# programmers:

  1. LINQ for Beginners (10/29/2006)
  2. Query Expressions (10/31/2006)
  3. Query Operators (11/11/2006)
  4. Using Distinct and Avoiding Lambdas (11/19/2006)
  5. Focus on Grouping (12/2/2006)

He avoids deep discussions of lambdas, which makes the articles useful for VB developers also. Charlie points to a video and some recent articles of interest to LINQ and ADO.NET EF developers:

Here are a few links to recent Channel9 videos that might interest LINQ developers:

Updated: 12/7/2006 with Charlie Calvert's fifth episode of the LINQ Farm: Focus on Grouping. 12/8/2006 for potential Orcas issues with VS 2005 SP1.

Technorati Tags: Orcas, ADO.NET vNext, Entity Framework, Entity Data Model, LINQ, LINQ to Entities, LINQ to DataSets, LINQ to SQL, Entity SQL, eSQL, DLinq, XLinq, C# 3.0, VB 9.0, ObjectSpaces, Domain-Specific Languages, DSL, DSL Tools

Monday, September 04, 2006

Generate RSS Feeds with ASP.NET and LINQ to XML

Jim Wooley has written a clever LINQ to XML procedure that generates RSS feeds from event logs. If you've installed the Microsoft Visual Studio Code Name “Orcas” Language-Integrated Query, May 2006 Community Technology Preview, you can download Jim's source code for the _Default partial class as Default.aspx.vb, and give it a test drive, preferably with IE 7.0 RC1 or later. Just create a new Visual Basic LINQ ASP.Net Web Site from the VB templates and substitute his Default.aspx.vb for the original empty version under the Default.aspx node, as shown here:

Tip: Clear at least the Application log and reboot before running the project. Otherwise, you'll find that Iexplore.exe will consume almost all available memory while it attempts to generate an RSS file with several thousand items.

Press F5 to build and run the project. If you have IE 7.0 RC1 or a late beta, the page appears as shown here:

If you're familiar with Dave Winer's RSS 2.0 spec, you'll notice some missing items—such as the top-level <rss version="2.0"> element—and non-conforming <publisher> and <author> tags under the <channel> element. <item> elements also have non-conforming <date> and <creator> tags, and dates that don't conform to RSS's requirement for the RFC 822 date/time format.

Adapting the Page for Feed Readers

IE 7.0 ordinarily displays RSS and ATOM files with a style sheet. For example, here's the start of the IE 7.0 feed page for the OakLeaf Systems blog as of this post's date:

Note: IE 7.0's style sheet treats ATOM 0.3/1.0 feeds as RSS 2.0 feeds with elements qualified by ATOM namespaces.

I wanted to see how IE 7.0's style sheet would handle the feeds generated by Jim's project. The missing top-level <rss version="2.0"> element prevents IE 7.0 from applying its feed style sheet. I believe that other non-conforming elements might prevent some readers from displaying the data correctly. I also wanted to add hierarchical <category> tags to see if IE 7.0 would filter events by category correctly.

So I added the <?xml version='1.0' encoding='UTF-8'?> XML declaration and the <rss version="2.0"> element pair, then made other minor corrections and a few additions to bring the feed up to the RSS 2.0 standard. Here's the result before subscribing to the feed in IE 7.0:

Note: The five filter categories are EventLog, EventLog/Entries, EventLog/Entries/Application, EventLog/Entries/Information, EventLog/Entries/Application/Warning. Filtering works as expected.

And here's the transformed page after subscribing to the feed:

If you publish the Website to IIS, run Cassini on a fixed port, or just copy the current URL—http://localhost:1686/XLinqRSS/Default.aspx—for this example you can subscribe to the feed with any popular reader. For example, here's Dare Obasanjo's RSS Bandit open-source reader displaying the OAKLEAF-MS15 feed:

You can read an abbreviated version of the updated RSS 2.0 feed code here and see the modified Visual Basic 9.0 source code for the updated WriteRSS20 subprocedure here.

Syndicating event logs isn't a mainstream RSS application, but Jim Wooley's technique demonstrates the remarkable efficiency of programming with LINQ for XML and VB 9.0's XML inline literals with inserted element and attribute values.

Technorati Tags: LINQ to XML, XLinq, LINQ, Orcas, RSS 2.0, RSS, Event Logs, Jim Wooley

Saturday, August 26, 2006

ADO.NET vNext and Entity Framework Resources

This post contains links to resources for .NET developers who are interested in exploring ADO.NET vNext for Visual Studio vNext ("Orcas"). The link topics are the Entity Framework (EF), Entity Data Model (EDM), Entity SQL (eSQL), LINQ to Entities, LINQ to SQL (formerly DLinq), LINQ to DataSets, LINQ to XML (formerly XLinq), LINQ to Objects, and EF's erstwhile predecessor, ObjectSpaces. The last two sections of this post are devoted to Object/Relational Mapping (O/RM) in general and Domain-Specific Languages (DSLs).

Note: Unlike most blogs entries, this item is updated and republished periodically (see the end of this post for details.) Last update 4/11/2007.

ADO.NET vNext and LINQ CTP Downloads

The following CTPs have been superceded by the ADO.NET Entity Framework and LINQ implementation of the Orcas March 2007 Community Technical Preview. However, some features of the May and August 2006 LINQ CTPs are missing from this Orcas CTP -- most notably, the Entity Data Model (EDM) Designer, which will not be included in the final Orcas RTM version.

Microsoft Visual Studio Code Name “Orcas” Language-Integrated Query, May 2006 Community Technology Preview installer (LINQ Preview (May 2006).msi, 5/10/2006, required to install ADO.NET vNext CTP)

Use the Add/Remove Programs tool to remove previous versions (PDC 2005 or January 2006) of the LINQ CTP and review the C# Readme, VB Readme, or both before downloading and installing the LINQ May 2006 CTP (5/10/2006)

ADO.NET vNext CTP (Community Technology Preview) - August 2006 installer (ADONETVN.msi, 8/17/2006, requires LINQ May 2006 CTP, Visual Studio 2005 Standard Edition or higher, Visual Basic 2005 Express, or Visual C# 2005 Express; Visual Web Developer 2005 Express isn't supported.)

Visual Studio 2005 Web Application Projects add-in (WindowsApplicationProjectSetup.msi, 1.2MB) is required to run the WebForm's Visual Basic version that includes a WebAppSample.vbproj file.

White Papers and Backgrounders

Entity Framework (EF) and Entity SQL (eSQL)

Next-Generation Data Access: Making the Conceptual Level Real by José Blakeley, David Campbell, Jim Gray, S. Muralidhar, and Anil Nori (June 2006, HTML)

The ADO.NET Entity Framework Overview (June 2006, HTML)

ADO.NET Tech Preview: Entity Data Model (June 2006, HTML)

eSQL: An Entity SQL Language, ADO.NET Technical Preview (promised by the "Overview")

Entity SQL Quick Reference Guide (June 2006, a Word DOC in your C:\Program Files\Microsoft SDKs\ADO.NET vNext CTP\Docs folder after installing the CTP)

Mapping-Driven Data Access, a position paper by Sergey Melnik about declarative mapping, bidirectional views, and view maintenance in the ADO.NET Entity Framework (8/23/06 draft, see also the Reusable Tools for Metadata Management - Pie in the Sky? presentation in the next section).

There Is No Impedance Mismatch: Language Integrated Query In Visual Basic 9, a brief paper to be presented by Microsoft Research's Eric Meijer at the ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2006), October 22-26, Portland, Oregon. Queries in ADO.NET vNext, a detailed ADO.NET Team Blog post by S. Muralidhar, a.k.a, Murali (August 21, 2006)

The Weird World of Bi-Directional Programming slides about the University of Pennsylvania's Harmony, a universal data synchronizer, by Benjamin C. Pierce, Microsoft Research, Cambridge (on leave from the University of Pennsylvania, March 2006)

Integrating Programming Languages & Databases: What's the Problem? by William R. Cook and Ali H. Ibrahim, Department of Computer Sciences, University of Texas at Austin (October 2005 draft)

LINQ to DataSet

LINQ to DataSet for C# Developers (May 2006, Word DOC)

LINQ to DataSet for Visual Basic Developers (May 2006, Word DOC)

LINQ to SQL (formerly DLinq) 

LINQ to SQL: .NET Language-Integrated Query for Relational Data by Dinesh Kulkarni, Luca Bolognese, Matt Warren, Anders Hejlsberg, Kit George (updated March 2007)

DLinq Mapping Draft Specification (August 2006, Word DOC)

DLinq Data Types and Functions (August 2006, Word DOC)

DLinq Overview for C# Developers (May 2006, Word DOC)

DLinq Overview for Visual Basic Developers (May 2006, Word DOC)

DLinq Designer (May 2006, Word DOC). See also the Domain-Specific [Programming] Languages (DSL) section at the end of this post.

LINQ to XML (formerly XLinq)

.NET Language-Integrated Query for XML Data by Michael Champion (updated February 2007)

XLinq Overview (May 2006, Word DOC)

XML Support In Visual Basic by Erik Meijer and Brian Beckman (January 2006, PDF)

Generic LINQ, C# 3.0 and VB 9.0

LINQ: .NET Language-Integrated Query by Don Box and Anders Hejlsberg (updated February 2007)

The .NET Standard Query Operators by Anders Hejlsberg and Mads Torgersen (updated February 2007)

Overview of C# 3.0 by Anders Hejlsberg and Mads Torgersen (updated March 2007)

Overview of Visual Basic 9.0 by Erik Meijer, Amanda Silver and Paul Vick (September 2005)

C# Version 3.0 Specification (October 2005)

ObjectSpaces (abandoned)

A First Look at ObjectSpaces in Visual Studio 2005 by Dino Esposito (February 2004)

Getting Started with ObjectSpaces by Jan Teilens for MSDN Belgium/Luxembourg (February 2004, HTML)

Videos, Screencasts, Podcasts, and PowerPoint Presentations

Visual Studio: The .NET Language Integrated Query (LINQ) Framework Overview with Anders Hejlsberg from Tech*Ed Barcelona (November 2006)

C# 3.0: Future Directions in Language Innovation with Anders Hejlsberg from Tech*Ed Barcelona (November 2006)

Anders Hejlsberg on LINQ and Functional Programming interview with Charlie Calvert (January 26, 2007)

The LINQ Project with Anders Hejlsberg from the LANG.NET conference (August 2006)

ADO.NET Entity Framework: What. How. Why. Channel9 video with Pablo Castro, Michael Rizzo, and Britt Johnston (July 19, 2006)

Two ADO.NET vNext screencasts (C#): Part 1 and Part 2 (July 11, 2006)

Chatting about LINQ and ADO.NET Entities Channel9 video with Anders Hejlsberg and Sam Druker (June 9, 2006).

Slides from Reusable Tools for Metadata Management - Pie in the Sky, by Sergey Melnik, Microsoft Research, a keynote presentation about EDM in ADO.NET vNext and mapping-driven data access to the 18th International Conference on Scientific and Statistical Database Management (SSDBM 2006, July 3 - 5, 2006, Vienna University, Austria.

Slides and ASP.NET/LINQ to Everything sample code from Scott Guthrie's Building Data Driven ASP.NET Web Applications using LINQ presentation at Tech•Ed 2006 Australia and New Zealand.

InfoWorld analyst Jon Udell interviews Anders Hejlsberg about the LINQ and the May 2006 CTP (May 12, 2006)

Slides from Jim Gray's Database Activities and Trends Tech*Ed London 2006 presentation, which refers to Entity Sets as the "next step for DataSets in ADO.NET v3", and describes LINQ for SQL and LINQ for XML as "a BIG deal" (June 2, 2006)

Note: The following two Jim Gray papers don't relate directly to ADO.NET vNext or LINQ, but are the foundation for much of the preceding Tech*Ed 2006 presentation.

Jim Gray’s What’s Next for Database presentation to the SQL PASS 2005 Community Summit (September 2005, video). Related paper by David Campbell, Service Oriented Database Architecture: App Server-Lite? (ACM SIGMOD, June 2005, PDF).

Slides from Jim Gray's The Revolution in Database System Architecture presentation from Advances in Databases and Information Systems (ADBIS, March 2004), Budapest; Extended abstract, The Revolution in Database Architecture (ACM SIGMOD, September 2004, PDF).

Slides from Meta Data Management by Sergey Melnik and Phil Bernstein of Microsoft Research's Model Management Project, presented at the 20th International Conference on Data Engineering (ICDE 2004, March 30 - April 2, 2004). Phil Bernstein formerly was the architect of Microsoft Metadata Services.

Luca Bolognese’s seminal Developing Applications Using ADO.Net ObjectSpaces presentation to the Microsoft Professional Developers Conference, PDC 2003 (October, 2003)

Microsoft ADO.NET vNext and LINQ-Related Sites and Blogs

The LINQ Project (main MSDN LINQ site, but not kept up to date

New ADO.NET blog (emphasizes ADO.NET vNext)

Danny Simmons: system.data.objects dev guy (EF Object Services layer)

XML Team (covers LINQ to XML)

Data Programmability Team (general data topics)

Dinesh Kulkarni (LINQ to SQL, infrequent posts

Scott Guthrie (ASP.NET and LINQ)

Matt Warren (occasional posts about LINQ)

Dave Remy (formerly XLinq program manager and XML group program manager)

Andrew Conrad (posts about ObjectSpaces)

Soma Somasegar: LINQ and ADO.NET Innovations (LINQ naming conventions) and May LINQ CTP available now! (description of latest LINQ CTP)

Articles about ADO.NET vNext and LINQ from FTPOnline

Objectify Data with ADO.NET vNext by Roger Jennings for Visual Studio Magazine using the August 2006 CTP (October 30, 2006)

Generate Data-Based Web Sites With Blinq by Roger Jennings about an autogenerated ASP.NET Web site scaffolded with LINQ for SQL from the May 2006 CTP (June 26, 2006)

LINQ Takes Shape in May CTP by Roger Jennings about the May 2006 CTP from FTPOnline's Special Report on .NET (May 15, 2006)

Save Time With LINQ Queries by Bill Wagner, based on the January 2006 CTP, from FTPOnline's Special Report on SQL Server (May 1, 2006)

Test Drive VB9 and DLinq by Roger Jennings about the January 2006 CTP from Visual Studio Magazine (March 27, 2006)

Streamline Mapping With Orcas and LINQ by Roger Jennings about object-relational mapping (ORM) with the PDC 2005 version of LINQ from Visual Studio Magazine (November 7, 2005)

Microsoft Unveils .NET Data Futures at PDC 2001 by Roger Jennings about the first ObjectSpaces "Orca" Technical Preview (December 2001)

Note: Reading more than page 1 of the preceding articles or downloading sample code no longer requires free registration.

Microsoft Newsgroups for ADO.NET vNext and LINQ

ADO.NET Orcas Forum (for Entity Framework, LINQ to Entities, Object/Relational Mapping, and Entity Data Modeling)

LINQ Project General Forum (for LINQ to Objects, LINQ to SQL, LINQ to XML

OakLeaf Blog Entries about ADO.NET vNext, LINQ, and ObjectSpaces

See Yet Another Primer on New Language Features in Orcas (March 13, 2007, updated April 11, 2007) for serial posts about LINQ, LINQ flavors, and (primarily) C# 3.0.

Search Google for OakLeaf items about ADO.NET vNext, DLinq or LINQ to SQL, XLinq or LINQ to XML, and ObjectSpaces (Blogger search doesn't display items earlier than March 2006; these Google searches return all items.)

Other Third-Party ADO.NET vNext and LINQ Blogs

Andres Aguiar: Andres Aguiar's Weblog

Peter Gielens: ThoughtsService

Kevin Hoffman: The .NET Addict's Blog

Julie Lerman: The Data Farm and DevLife

Sahil Malik: blah.winmarts.com Blog

Fabrice Marguery: Fabrice's Weblog and The Mad Geek (articles in English and French.)

Bart de Smet: The B# Blog (IQueryable Tales - LINQ to LDAP)

Erwyn Van Der Meer: Blogging About Dot Net

Jim Wooley: Wooley' Wanderings

Note: Listed alphabetical by last name.

See Yet Another Primer on New Language Features in Orcas for links to Microsoft and third-party blogs about LINQ and the Entity Framework.

Object/Relational Mapping (O/RM) Resources

Entity/Relationship Model (Wikipedia)

Object/Relational Mapping definition (Wikipedia)

How-To-Select an Object-Relational Mapping Tool for .NET by Jason Mauss reviews 36 proprietary and open-source O/RM tools (undated)

Choosing an object-relational mapping tool (for .NET) by Fabrice Marguerie, also available in French (November/December 2004)

The Viet Nam of Computer Science by Ted Neward, an essay postulating that the U.S. military machine were and computer programmers now are "faced with a deadly form of the Law of Diminishing Returns (June 2006)

More coming soon.

Domain-Specific [Programming] Languages (DSLs)

Domain-Specific Programming Languages definition (Wikipedia)

Visual Studio 2005 Domain-Specific Language Tools site

Stuart Kent: Domain-Specific Software Development blog

Steve Cook: Steve Cook's Weblog (Microsoft DSL Tools team)

Updates: 9/2/2006: Added ADO.NET vNext related papers and presentations by Microsoft Research's Sergey Melnik and Phil Bernstein, who are members of the Database Group and direct the Model Management Program. 9/5/2006: Added links to Eric Meijer's VB 9.0 OOPSLA 2006 presentation and Scott Guthrie's Tech•Ed 2006 Australia and New Zealand LINQ session, plus Sahil Malik's Winsmarts.com blog. 9/8/2006: Added A First Look at ObjectSpaces in Visual Studio 2005 by Dino Esposito (February 2004), The Weird World of Bi-Directional Programming by Benjamin C. Pierce (March 2006), Integrating Programming Languages & Databases: What's the Problem? by William R. Cook and Ali H. Ibrahim, Department of Computer Sciences, University of Texas at Austin (October 2005 draft), The Viet Nam of Computer Science by Ted Neward, and several Wikipedia entries. 12/8/2006: Added reference to Chatting about LINQ and ADO.NET Entities video with Anders Hejlsberg and Sam Druker. 4/11/2007: Major update with additions of updated Microsoft white papers from Jim Wooley's LINQ articles on MSDN2 post of 4/11/2007 and LINQ to SQL white papers and LINQ videos from Charlie Calvert's February/March Orcas CTP Now Available post of 3/1/2007.

Technorati Tags: ADO.NET vNext, Entity Framework, Entity Data Model, LINQ, LINQ to Entities, LINQ to DataSets, LINQ to SQL, Entity SQL, eSQL, DLinq, XLinq, C# 3.0, VB 9.0, Orcas, ObjectSpaces, Domain-Specific Languages, DSL, DSL Tools