Saturday, July 19, 2008

LINQ and Entity Framework Posts for 7/16/2008+

Note: This post is updated daily or more frequently, depending on the availability of new articles.

Updated 7/20/2008 with additions.

Shawn Wildermuth Adds ADO.NET Data Services Support for LINQ to NHibernate in a Silverlight 2 Example

Shawn’s Silverlight 2 + NHibernate.LINQ == Sweet post of July 19, 2008 describes an NHibernate.LINQ (LINQ to NHibernate) implementation for ADO.NET Data Services (Astoria) in a live Silverlight 2 sample project. According to Shawn, the new implementation includes:

  • Support for IUpdateable to support full NHibernate CRUD.
  • Support for a new Expand extension method to do eager loading via the LINQ interface.  (The Expand method is similar to Entity Framework's Include method.)
  • Finally, using the Expand extension method, I implemented the IExpandProvider interface to allow for expansions via the REST API.

Shawn promises:

In addition, I'll be finishing up my discussion of implementing the IUpdateable interface pretty soon to help those of you adding this support to your projects. I'll also be blogging about how I added the IExpandProvider to help those of you trying to add that to your projects (or even to LINQ to SQL).

Note: The URLs for NHContrib and NHibernate.LINQ are the same in Shawn’s post. NHibernate.LINQ doesn’t appear for me in the NHibernate Contrib’s Latest File Releases list.

Added: 7/20/2008

Emir Treviño Publishes Code Generator for Entity Framework with T4 Templates

According to Emir, the SFS for Microsoft Visual Studio 2008 CodePlex project released on July 4, 2008 is an add-in to VS 2008 that increases the efficiency of code generation for Entity Framework with the Text Template Transformation Toolkit (T4). The project includes an initial example, ADO.NET Entity Framework to Any Layer, which generates classes for multiple-tier EF projects.

Emir offers the following posts that describe how to use his SFS add-in:

The project documentation and posts are also available in Spanish.

Added: 7/20/2008

SQL Server Data Services Team: Sprint 3 Scheduled for July 24-25, 2008

My Sprint 3 for SQL Server Data Services Will Add Several New Features post of July 9, 2008 contained a list of the features expected to be implemented by Spring 3.

In an email message of July 18, 2008, the SSDS Team set the upgrade window as follows:

  • START: Thursday, July 24, 2008 at 9:00 AM (PST)
  • END: Friday, July 25, 2008 at 9:00 AM (PST)

The message also was more explicit about lack of SOAP support for blobs:

“Blob Support via the SOAP interface will be delivered in a later update.”

Rather than":

“Blob support via the SOAP interface is coming.”

From which one might infer that Spring 3 would include SOAP for blobs. Otherwise, the text of the Sprint 3 message is the same as in the preceding post.

Added: 7/19/2008

Mike Amundsen Adds a Console Version of His SQL Server Data Services Example Demos

By a SSDS Console App Demo Posted to Codeplex message of July 17, 2008 in the SQL Server Data Services (SSDS) - Getting Started forum, Mike adds a console app for communicating with SSDS to his original ASP.NET version. Mike says:

One of the cool features of this demo app is that you can now use Windows batch files (for example) to script interactions with SSDS. I included a simple example with the downloadable ZIP

Added: 7/19/2008

David Hayden Casts Vote for ASP.NET Dynamic Data Services Futures, Dynamic Data Runtime and Templates, and Dynamic Data for MVC Preview

Dave’s ASP.NET Dynamic Data Futures and MVC Sample - Database-Driven Web Applications post of July 18, 2008 includes kudos for the 7/17/2008 Futures release (see “Marcin Dobosz Announces ASP.NET Dynamic Data Futures Update” below) and the Dynamic Data Runtime and Templates, and Dynamic Data for MVC Preview updates of 7/18/2008.

Dave says:

ASP.NET Dynamic Data fills a great void for developing forms-over-data web applications. I used it to build a quick intranet application for a client and they couldn't be any happier. …

The ASP.NET Dynamic Data Runtime and Template Release on 7/18 fixes bugs in primarily the Dynamic Data Wizard. The ASP.NET Dynamic Data for MVC Preview shows off how to incorporate the wonderful scaffolding of Dyamic Data with the ASP.NET MVC Framework.

All very cool stuff.

Added: 7/19/2008

Darrin Maidlow Documents His Struggles with Implementing NHibernate

Developers new to NHibernate find implementing NHibernate for non-trival projects isn’t a piece of cake, as Darrin demonstrates in his RADE Milestone - Object Relational Mapping with NHibernate post of July 19, 2008. Darrin writes:

NHibernate was a tough curve for me.  Initially, I started testing code generators.  After spending a significant amount of time reading, testing, and pulling out hair I came to the conclusion that NHibernate code generation is still not there. …

Finally, get NUnit running.  I had a lot of problems using the built in Microsoft Test projects with NHibernate - so I'll be sticking with NUnit. If you've never done unit testing (you know who you are) do it.  Particularly in this case - its crucial.

Darrin chose NHibernate over Entity Framework because he belived it supported SQL Server only:

LINQ with the Entity Framework looks really cool and I've used it for some small research/test projects recently, but with the lack of support for database other than SQL server - it's not an option at this time.

Apparently, he wasn’t aware of the large number of third-party Entity Data Model-enabled managed data providers for EF: See Recent ADO.NET Entity Framework provider news - Demos and downloads by David Sceppa.

Added: 7/19/2008

Soumitra Sengupta Maps SQL Server Data Services Entity Typing Futures

In his Mike Amundsen is putting out lot of samples in his blog post of July 16, 2008, Soumitra addresses Mike’s concerns that aligning the SSDS API with ADO.NET Data Services (Astoria) complicates SSDS:

I do not disagree with Mike that one of the core values of SSDS is its simplicity.  It is a tribute to the team that they have been able to keep it simple for developers to approach and use right away.  I appreciate Mike's concern that aligning SSDS with Astoria could make SSDS lot more complicated.  As I said in my response, the alignment does not mean that we are ditching the flex entity model.  Once we release the aligned service, as a developer you will have a choice of staying with the flex entity model or add schemas where it makes sense to add schemas.  We hope to provide this capability at the container level so you can choose to:

a. Keep all entities as flex entities
b. Keep all entities as typed entities
c. Have both typed and untyped entities and type entities with open or flex properties

The side effect is that the Astoria client library then becomes the default client library for developers to build their applications in Visual Studio.  Still does not solve the problem of client libraries for Java, Ruby and PHP.  I still got those on my plate to address.

I’ll be interested to see how the team handles untyped, freeform (flex) entities combined with typed entities with a schema.

Added: 7/19/2008

LINQ to WMI Updated for .NET 3.5

Emile Bosch created the original version of LINQ to WMI (Windows Management Instrumentation) in 2005 and Eden Ridgeway updated it to .NET 3.5 in January 2008.

On July 17, 2008 “nyxtom” (who appears to be Thomas Holloway), ported the project to Linq2WMI on Codeplex. For consistency with other LINQ implementations, I’m rechristening it LINQ to WMI.

By the way, the originators given name is Emile, not Emily.

Thanks to Greg Duncan for the heads up on 7/19/2008.

Added: 7/19/2008

Tim Mallalieu Delivers a Preview of POCO for Entity Framework v2

Tim’s Look Mom... no XML post of July 18, 2008 announces the the Entity Framework team “has just wrapped up” its first iteration of v2 and says:

We are shooting to get another iteration in before PDC and are still working on how we can get early bits out to customers outside of the rhythms of the CTP's and such.

One of the nifty things in our first iteration, though, was some of the work that we did around POCO. There is a lot more to be done with POCO, we need to still deliver lazy load, value objects and more. With these bits, however, it is possible to write basic POCO code now.

He then goes on to describe use of the ContextFactory.CreateContext() method to create the Context and a POCO Product class and a Products ObjectQuery. Tim explains:

The entry point for being able to use this code without artifacts is the ContextFactory. The ContextFactory reflects over the Context type that one wrote by hand. It looks for all properties of type ObjectQuery<T> and then uses these to define an in-memory representation of the models (conceptual, store, mapping) which are then passed to the metadata infrastructure.

Added: 7/18/2008 1400 PDT

“Data Dilemma” Cover Story for Redmond Developer News’ July 15 Issue

My “Data Dilemma” cover story, sub-titled “Mapping a strategy for Microsoft's new data-programming models” for the July 15, 2008 issue of Redmond Developer News covers the ADO.NET data technologies included in Visual Studio 2008’s forthcoming Service Pack 1: ADO.NET Entity Framework, ADO.NET Data Services (formerly codenamed “Astoria”), and ASP.NET Dynamic Data.

The article includes quotes on these new technologies from:

  • Michael Pizzo, principal architect, SQL Server Data Programmability Group
  • Andrew Brust, chief of new technology at twentysix New York
  • Ward Bell, VP of product management at IdeaBlade Corp.
  • Rockford Lhotka, principal technology evangelist for Magenic Technologies Inc.
  • Chris Kinsman, VP of development at Vertafore, Inc.
  • Elisa Flasko, community program manager, SQL Server Data Programmability Group
  • Troy Magennis, enterprise software architect, Corbis Corp., and curator of the Hooked on LINQ wiki
  • Frans Bouma, LLBLGen Pro lead developer at Solutions Design BV
  • Steve Naughton, developer of Web applications for the UK construction industry

For more details about the article, see “Data Dilemma” Cover Story for Redmond Developer News’ July 15 Issue of July 16, 2008.

Tim Mallalieu: Entity Framework v1 Wasn’t Designed to Compete with NHibernate

NHibernate proponents probably would phrase the statement slightly differently: “Entity Framework isn’t competitive with NHibernate.”

Tim’s Newsflash: EF V1.0 was not intended to be a NHibernate compete of July 17, 2008 recounts his dinner on July 15, 2008 with Scott Bellware, the author of the ADO.NET Entity Framework Vote of No Confidence manifesto, and Greg Young, both of whom certainly fall into the “NHibernate proponents” category. Tim says:

Having the EF in the market creates noise for [Scott and his compatriots] because it becomes a technology choice between a Microsoft product that does not yet address this school of software development and open source solutions that do.

Developers who’ve invested a substantial amount of time into Test-Driven Development (TDD), Domain-Driven (and now Behavior-Driven) Design (DDD and BDD) have the expected paranoia toward a heavily promoted Microsoft contender in the object/relational mapping (O/RM) tool market. At the very least, these folks will need to explain to current and prospective clients why they don’t use EF. At the worst, all-Microsoft shops might insist they use EF.

Tim promises:

I shall attempt to make a series of posts leading up to and following the advisory council where I go into a bit of the history and future. This will not yield a decision matrix for a developer but it may be interesting for folks.

It will be interesting to see how Tim’s history compares with Matt Warren’s earlier The Origin of LINQ to SQL.

Note: See below re “heavily promoted.”

Fausto Ibarra Talks Up ADO.NET Entity Framework

Fausto is the new Director of Product Manager for SQL Server, replacing Francois Ajenstat who’s moved to greener pastures in Microsoft’s green initiatives, according to Q&A: Fausto Ibarra Takes SQL Server Reins by Jeffrey Schwartz.

Here’s the Q & A on the Entity Framework Front from the July 16, 2008 article in Redmond Developer News:

Will you be coordinating this with the release of Service Pack 1 of Visual Studio 2008 and the .NET Framework and the Entity Framework?
We are coordinating them. The Entity Framework will ship with .NET Framework 3.5 SP1 and it will ship roughly at the same time as SQL Server. When we talk about the Entity Framework, we talk about it from the perspective of SQL Server and from the perspective of the .NET Framework and Visual Studio. No matter where developers are coming from, we will talk to them about the Entity Framework and coordinating the messaging of both releases across all our different developer channels, like MSDN. [Emphasis added.]

Notice that there’s no mention of LINQ to SQL in the article.

Jürgen Bäurle Develops LINQ to SAP for Theobald Software GMBH

According to Jürgen’s LINQ to SAP: How to use LINQ to connect to a SAP/R3 system Code Project article of July 17, 2008, LINQ to SAP from Theobald Software GMBH can query SAP Function Modules, Tables, BW (OLAP) Cubes and SAP Queries. Theobald Software’s primary product is, a .NET interface to SAP R/3.

The article also describes LINQ to SAP’s graphical designer for Visual Studio 2008, which adds a LINQ to ERP template and autogenerates classes for SAP objects in a manner that’s vaguely similar to LINQ to SQL.

Jürgen specializes in .NET/SAP development.

Denny Boynton Interview at Tech*Ed 2008 IT Pro: Pragmatic Data Architecture

In this interview video at Tech*Ed 2008 IT Pro by Paul Nielsen posted July 17, 2008, SQL Server architect-evangelist Denny Boynton stresses the importance of the hands-on project data architect, in addition to the more common enterprise data architect.

From the official description:

Some shops say architects should be hands off, other expect the data architect to be involved in projects – how do we resolve this issue? And if the data architect is involved in projects, what’s the best he or she can contribute? How do we measure quality of a database project? We believe there are six attributes of a database. This talk will cover these attributes and the practices that best contribute to these qualities.

Mary Jo Foley Blames Microsoft’s Online Systems Business for Its Missed Earnings Projections

Mary Jo’s Microsoft’s online plan: Spend, spend, spend column of July 18, 2008 begins:

If you think Microsoft’s been spending like crazy in the online space, you ain’t seen nothing yet. (And that’s not counting when or if Microsoft’s multi-billion-dollar bid for Yahoo’s search business is ever consummated.)

Microsoft missed earnings projections when it announced its Q4 FY 2008 numbers on July 17. To some company watchers’ surprise, it wasn’t Windows Vista — which Microsoft claims to have sold 180 million licenses now — that was to blame. Instead, yet again, it was Microsoft’s Online Systems Business (OSB), more than anything else, that dragged down the numbers.

However, Microsoft officials told Wall Street analysts not to expect Microsoft to change its OSB investing-for-the-longhaul strategy any time soon. Microsoft is planning to step up its online spending around driving usage of Live Search and growing its advertiser base for its adCenter online-ad platform.

However, OSB includes more than just Live Search and other ad-supported services. It also includes SQL Server Data Services (SSDS), Live Mesh synchronization, and the new Exchange Online, SharePoint Online, Office Communications Online and Office Live Meeting package that rents for $15.00 per month.

Marcin Dobosz Announces ASP.NET Dynamic Data Futures Update

His Dynamic Data Futures 7/16 update posted article of July 17, 2008 lists the following as what’s new in this week’s update on CodePlex:

    • Added ImprovedDynamicValidator control that fixes issues with DynamicValidator correctly catching exceptions thrown off a validated data model object. A tag mapping in web.config is used to automatically replace all instance of DynamicValidator with ImprovedDynamicValidator. This validator is also now added to the ForeignKey_Edit template.
    • Added EnumDataTypeAttribute that can be used to mark integral columns as actually representing enumerated CLR types.
    • Modified the Enumeration field template and filter template to take EnumDataTypeAttribute into account.
    • Modified the Enumeration filter template to detect if an enum is in flags mode and display a CheckBoxList instead of a DropDownList.
    • Added validation to the DbImage_Edit template. It now verifies that the provided file is a valid image and also that a file is provided at all if the column is required.
    • Added constraints to routes to illustrate how to block invalid requests.

Phani Raju and Marcelo Lopez Ruiz Write SetBasedExtensions for Adding Set-Based Methods to Astoria

Phani and Marcelo’s Set Based Operations in ADO.NET Data Services post of July 17, 2008 includes the complete source code for an extension method to facilitate set-based methods with a dynamic filter predicate. The post also includes a usage example.

The extension method proves that Phani and Marcelo are LINQ Ninjas.

dnrTV Offers Danny Simmons’ Introductory ADO.NET Entity Framework Screencast, Part 1

Dan Simmons on The Entity Framework Part 1 of July 14, 2008 is the first of a two part introduction to the ADO.NET Entity Framework (EF). Here’s his bio:

Daniel Simmons is dev manager for the Entity Framework and LINQ to SQL team where his mission is to build a team and a product that will fundamentally change the way we build data-centric software. He has been at Microsoft for 10 years working on a variety of products. Before coming to Microsoft he worked as a consultant, founded an ISP and engaged in various other software pursuits.

I’d like to see parts 3, 4, … cover advanced EF topics.

Joe Gregorio Publishes Introductory Video on Atom Publishing Protocol on You Tube

Google’s Joe Gregorio is Google’s “main man” on the Atom Publishing Protocol (AtomPub, APP) that’s one of the wire protocols for ADO.NET Data Services and is schedule for support by SQL Server Data Services.

This 9-minute video covers the basics of AtomPub’s Create, Retrieve, Update and Delete operations, adding media, and other topics. Surprisingly, the code is readable.

Wriju Publishes LINQ to SQL Bibliography Update

From the “How Did I Miss This?” Department

His LINQ to SQL : Missing Manual are at MSDN post of July 3, 2008 shows that UserEd has been working overtime on LINQ to SQL topics. The post contains 18 links to MSDN library topics about LINQ to SQL; each topic includes a brief description.

Thanks to Jim Wooley for the heads-up.