Wednesday, November 05, 2008

LINQ and Entity Framework Posts for 11/3/2008+

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

• Update 11/5/2008: Additions

Entity Framework and Entity Data Model (EF/EDM)

Matthieu Mezil explains how to use EF’s ObjectStateManager to get and count added entities without executing a query or hydrating the entire EntitySet in his Get added entities in the query post of 11/2/2008 and Get added entities in the query (next) of 11/3/2008.

Nate Zaugg’s LINQ to Entities Example Queries post of 11/2/2008 shows:

[H]ow to use the EntityClient, ObjectQuery, and LINQ to Entities queries.  All examples are built using a 1:1 mapping to the Adventure Works database that had been slightly modified.  The Object Services with Lazy Loading Example shows some how to debug these queries.


• Kristofer Andersson demonstrates set-based UPDATE expressions for LINQ to SQL in his Architecture - Linq-to-SQL and set-based operations: Update statements post of 11/5/2008. His LinqSetbasedExpressions class translates a LINQ expression, such as the following to add +49 to German phone numbers:

   (where => where.Country == "Germany" && !where.Phone.StartsWith("+49")),
   (set => set.Phone == "+49" + set.Phone),

To this T-SQL UPDATE statement:

update dbo.Customers with (rowlock) 
set [Phone] = (@p0 + [Phone]) 
where CustomerID in 
(SELECT [t0].[CustomerID]
    FROM [dbo].[Customers] AS [t0]
    WHERE ([t0].[Country] = @p1) AND 
    (NOT ([t0].[Phone] LIKE @p2)))

Kris’s license doesn’t allow redistribution of the source code, but it does permit its use in compiled form.

Mark Monster’s Linq to SQL doing it manually: Part 1 - Table and column creation from C# post of 11/3/2008 explains in detail how to bypass LINQ to SQL’s O/R Designer and eliminate XML mapping files by relating relational data to CLR objects with attribute-based mapping.

Interestingly, this is exactly the same approach described for configuration-driven mapping for EF v2 by Tim Mallalieu in his Entity Framework Futures PDC 2008 session.

Ian Cooper suggests that the ADO.NET Team “announce a successor to both LINQ To SQL and Entity Framework” rather than abandoning LINQ to SQL in his well-reasoned LINQ to SQL, EF, and the Thunderdome Solution post of 11/3/2008.

Ian was one of the original proponents of LINQ to SQL as an enterprise data access layer and wrote a multi-part series about LINQ to SQL in n-tier architecture.

Paul GielensBest Decision to Kill LINQ to SQL post of 11/3/2008 announces his agreement with Tim Mallalieu to abandon LINQ to SQL. This contradicts his previous position as stated in his SDN Conference 2008 post of 10/10/2008.

LINQ to Objects, LINQ to XML, et al.

Bart De Smet investigates LINQ’s forthcoming Zip operator in his C# 4.0 Feature Focus - Part 3 - Intermezzo: LINQ's new Zip operator post of 11/3/2008.

ADO.NET Data Services (Astoria)

David Haden points to ASP.NET 4.0’s Dynamic Data implementation will support Astoria in his ASP.NET 4.0 Roadmap - MVC Dynamic Data AJAX - Web Design and Development Futures from PDC post of 11/4/208 (see the “ASP.NET Dynamic Data” section for more details.)

Pablo Castro points to a video of Astoria Offline and promises to release it by the end of 2008 in his Alpha preview of Project Codename "Astoria Offline" coming soon post of 11/3/2008.

Marcello Lopez Ruiz recommends using SysInternals’ TCPView utility to find out What ports are used on my machine? when running Astoria in this 11/3/2008 post.

Rob Bagby’s PDC Session Code And Link post of 11/3/2008 contains links to his WCF: Developing RESTful Services session (with Steve Maine), downloadable source code, and database.

I wish more PDC 2008 presenters would post their source code and data sources.

Mike Hole’s ADO.NET Data service and Silverlight V2.0 ... Part 1 - Getting data. post of 10/15/2008 just appeared in Technorati’s ADO.NET Data Services tag page.

ASP.NET Dynamic Data (DD)

David Hayden observes in his ASP.NET 4.0 Roadmap - MVC Dynamic Data AJAX - Web Design and Development Futures from PDC post of 11/4/2008 that reviews Scott Hunter’s ASP.NET 4.0 Roadmap PDC 2008 session:

    • ASP.NET MVC Framework will offer additional functionality like asynchronous controllers, sub-controllers, more declarative functionality around things like validation, and again, better integration with Dynamic Data and AJAX.
    • ASP.NET Dynamic Data will continue to grow and get better integration with the ASP.NET MVC Framework. It will also support more of an abstract data access layer so you are not dependent just on LINQ To SQL and Entity Framework. Scott showed off better query support through query markup tags in the page source code, better data filtering options, use of dynamic data with Astoria ( ADO.NET Data Services ) as a datasource, and other cool features.

I am seeing a real investment here in ASP.NET Dynamic Data, so anyone who was thinking Dynamic Data was short-lived may want to adjust his/her thinking. A lot of work is being done to improve Dynamic Data and further the integrations between ASP.NET Webforms, ASP.NET MVC Framework, and other datasources like ADO.NET Data Services.

Scott Hunter points to the video of his ASP.NET Dynamic Data PDC 2008 session and other ASP.NET related sessions in his PDC ASP.NET Content Available Now post of 11/3/2008.

SQL Data Services (SDS) and Cloud Computing

• Ryan Dunn describes the neoMediaCenter.NET asset management project from NeoGeo New Media GmbH that combines local and SDS-based cloud storage of media files. Ryan’s post also includes a brief demo of the software by the company’s managing director.

Mike Amundsen’s Public Demo SDS Proxy Updated post of 11/3/2008 in the SQL Data Services Getting Started forum announces availability of his S[S]DS Proxy application updated from SSDS to SDS.

John Foley takes a tongue-in-cheek approach to Ray Ozzie’s two PDC 2008 keynote with particular emphasis on Windows Azure in his Parsing Ray Ozzie column of 11/4/2008 for InformationWeek’s Plug into the Cloud Blog.

Gus Perez explains that all installed Visual Studio versions, including Express editions, must be upgraded to SP1 to install the Windows Azure SDK in his Install blocked on Visual Studio SP1? post of 11/3/2008.

Dare Obasanjo’s Windows Azure from a Developer's Perspective post of 11/3/2008 defines Azure as a Platform as a Service (PaaS) offering that and:

  1. Describes what you need to get started with Azure
  2. Diagrams Azure cloud-based applications
  3. Explains the three-step process for deploying applications from the local development machine to the cloud
  4. Defines the Windows Azure Service Platform (WASP): SQL Services, .NET Services, Live Services, SharePoint Services, and Dynamics CRM Services

He observes that Azure competes with the Googe App Engine but doesn’t share its limitations: inability to run background tasks, support only for Python as a programming language, and scalability limitations.

Finally, Dare discusses the differences between PaaS and utility computing offerings, such as Amazon’s EC2 with Linux or Windows Server OSes in the cloud. He says:

[I]t would be informative to look at the topic from more angles, for instance what is the cost/benefit tradeoff of using SimpleDB/BigTable/SSDS for data access instead of MySQL running on multiple virtual hosts.

Unfortunately, potential users can’t run such a cost/benefit analysis without firm pricing for WASP’s SQL Data Services to compare with Amazon’s Windows 2003/SQL Server 2005 utility computing service.

Sahil Malik also raises the lack of Azure pricing in his I am super excited! post about Microsoft announcements at PDC 2008:

[H]ow can you get excited about something, without evaluating it's value? And how can you evaluate value without price, and a bit more detail of what's in the block diagrams?

My Microsoft Must Publish Projected Azure Service Levels and Pricing Now post of 11/2/2008 raises the same issue.

Rick Strahl’s My PDC 2008 Wrap up post of 11/2/2008 questions the viability of Windows Azure as a scalable Web services host because of its non-relational data store and:

One concern I see is that servers deployed today often do more than just act as Web application servers. You may have background services running and code may be interacting with a wide variety of technologies outside of the basic Web application’s scope. All of this doesn’t look like it’s going to be supported on Azure at the moment.

Azure does support background services, which Google App Engine doesn’t. According to the Windows Azure SDK:

A worker role is a background processing application. A worker role may communicate with storage services and with other Internet-based services. It does not expose any external endpoints. A worker role can read requests from a queue defined in the Queue storage service.

Here’s the diagram of hosted services from the Windows Azure SDK:

Note: Read Rick’s comment “… that you still need to build something specifically for these services. You can't just stick a standard Windows service you have on the box.”

Dan Farber calls Azure Microsoft's Manhattan Project in his 11/2/2008 “Outside the Lines” column for C|Net news.

James Urquhart and Geva Perry started a new podcast series and accompanying blog about cloud services on 10/31/2008: Overcast: Conversations on Cloud Computing

Michael Biddick’s 32-page A Walk in the Clouds report of September 2008 from InformationWeek Analytics is available free courtesly of VMWare. (Requires registration.)

SQL Server Compact (SSCE) 3.5 and Sync Services

Pablo Castro points to a video of Astoria Offline and promises to release it by the end of 2008 in his Alpha preview of Project Codename "Astoria Offline" coming soon post of 11/3/2008. (Copied from the “Astoria” section.)

Miscellaneous (WPF, WCF, MVC, Silverlight, etc.)

Frans Bouma throws cold water on Oslo’s claim that its M language makes authoring domain-specific languages (DSLs) easy in his Designing a language is hard, and M won't change that post of 11/5/2008.
Speaking of Oslo and DSLs, Aaron Skonnard’s Flander's introduction to M in "Oslo" post of 11/5/2008 points to Jon Flanders’ introduction to M screen capture of a DSL for defining a data source and Aaron’s earlier Introduction to "Oslo" post. Flanders spends the first 12:00 minutes of the 39:03 video to creating three SQL Server tables and an ASP.NET Dynamic Data project with an Entity Data model of the three tables. He then writes a M file to generate the same tables with Oslo’s IntelliPad text entry tool.
Ayende Rahien is finishing his Building Domain Specific Languages with Boo book for Manning Publications Co. The book description begins as follows:

The best-written code can be difficult to understand when you simply read it—even if you're a developer and have a general idea of what it does! A Domain Specific Language (DSL) can help you clearly express the essential intent of the code, and thus make it easier to work on the core business problem without having to cater to the idiosyncrasies of a compiler or framework.

Developers who migrate to Ruby from Java love the ability to define a DSL in a few lines of code. The Boo language brings this same ease and flexibility to.NET. In Boo, the developer can define simple DSLs for .NET applications without suffering through the awkward XML usually required.

Rob Bagby’s PDC Session Code And Link post of 11/3/2008 contains links to his WCF: Developing RESTful Services session (with Steve Maine), downloadable source code, and database.


Rick Strahl said...

Roger, thanks for the pointer, but my point is that you still need to build something specifically for these services. You can't just stick a standard Windows service you have on the box.

Also it's not clear from anything I've found whether the Fabrik spins up only when it is hit by a request (sort of like IIS AppPools) or whether it is always running. If the latter that's a problem for worker operations that need to be 'always on' and are otherwise separate from the Web application.