Note: This post is updated daily or more frequently, depending on the availability of new articles.
• Update 11/5/2008: Additions
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:
dc.Update<Customer>( (where => where.Country == "Germany" && !where.Phone.StartsWith("+49")), (set => set.Phone == "+49" + set.Phone), LockModeEnum.Row);
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 Gielens’ Best 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.
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.
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.
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.
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.
• 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:
- Describes what you need to get started with Azure
- Diagrams Azure cloud-based applications
- Explains the three-step process for deploying applications from the local development machine to the cloud
- 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.)
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.)
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.