Showing posts with label Continuous LINQ. Show all posts
Showing posts with label Continuous LINQ. Show all posts

Sunday, October 19, 2008

LINQ and Entity Framework Posts for 10/13/2008+

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

Update 10/18/2008 5:30 PM PDT: Minor additions
• Update 10/16/2008 4:30 PM PDT: ASP.NET MVC Beta and other additions
• Update 10/14/2008 5:00 PM PDT: Minor additions

Entity Framework and Entity Data Model (EF/EDM)

Matthieu Mezil’s ADO.NET Data Services Hooking POC V3 post of 10/17/2008 continues his Proof of Concept series about using EF as a data source for ADO.NET Data Services.

He finishes implementing the IUpdatable interface and enables the System.Collections.ObjectModel.Collection’s Count property in ADO.NET Data Services Hooking POC V3 .1 of 10/18/2008.

Note: The current v3.1 CodePlex download appears to be a T-SQL script, not source code for an IUpdatable implementation.

Ezequiel Sculli’s How-To: Perform Update Actions using an ObjectContainerDataSource with Entity Framework post of 10/16/2008 describes how to work around the failure of EF to update the data store with changes and display them in the postback. The workaround, according to patterns & practices’s How-To: Perform Update Actions using an Object Container Data Source with Entity Framework is to create a new instance of the entities for each operation performed.

Note: The ObjectContainerDataSource is a component of the Web Client Software Factory (WCSF).

•• The EF Team posted Migrating from LINQ to SQL to Entity Framework: Deferred Loading, the second in its EF from LINQ to SQL migration series, on 10/16/2008.

When the team finishes the series, will we receive the official deprecation notice for LINQ to SQL? See my Is the ADO.NET Team Abandoning LINQ to SQL? post of May 23, 2008.

Beth Massi’s Editing Data from Two Tables in a Single DataGridView post of 10/15/2008 explains how to update data from two tables in a DataGridView by entity splitting with the Entity Framework, LINQ to SQL, and DataSets as data sources.

Kristofer Andersson updated the Huagati DBML/EDMX Tools to version 1.40 on 10/15/2008. For more information, see the entry in the LINQ to SQL section.

David Sceppa announced on 10/14/2008 that Npgsql's ADO.NET Provider for PostgreSQL Supports the ADO.NET Entity Framework! For more details, see the PGFoundry blog’s Release Notes for Npgsql2.0RTM

Matthieu Mezil’s Bug with IQueryable and yield syntax: System.BadImageFormatException "An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)" post of 10/14/2008 describes an exception that occurs when attempting to execute the yield return statement on an IQueryable<T> sequence.

LINQ to SQL

Beth Massi’s Editing Data from Two Tables in a Single DataGridView post of 10/15/2008 explains how to update data from two tables in a DataGridView by entity splitting with the Entity Framework, LINQ to SQL, and DataSets as data sources. (Repeated from EF/EDM.)

Kristofer Andersson updated the Huagati DBML/EDMX Tools to version 1.40 on 10/15/2008. According to Kris, the updates include:

  • Added [HuagatiDBMLTools.msi] installer / uninstaller
  • Improved performance of the "Update Documentation" feature for LINQ to SQL
  • Moved menu items to a separate dropdown menu ("DBML/EDMX Tools") on the VS2008 menu bar to avoid congestion in the standard Tools menu
  • Fixed issue where the mouse pointer sometimes showed the hourglass/wait pointer when dialogs were visible
  • A couple of minor adjustments to the pluralization/singularization rules
  • Better handling of some reserved SQL keywords

Save the .zip file to a temporary folder, extract the files with the Use Folder Names option selected, and then run HuagatiDBMLTools.msi to install the files in a \Program Files\…\HuagatiExtensions folder. The installer adds a Huagati DBML EDMX Tools node to your Programs menu with Reset Add-in Menus in VS 2008 and User Guide commands. If you’ve installed an earlier version, choose Reset Add-in Menus in VS 2008 after installation.

Sidar Ok writes his own POCO classes and basic unit tests, and then uses SqlMetal’s XML mapping file option to generate the mapping layer in his Achieving POCO s in Linq to SQL post of 10/14/2008. Be sure to read the comments.

Rob Conery’s Make Visual Studio Generate Your Repository post of 10/13/2008 shows you how to use VS 2008 Text Template Transformation Toolkit (T4) feature to wrap a LINQ to SQL with a testable IQueryable Repository framework for use with (what else than) MVC.

Rob includes links to the Clarius's T4 template editor and Damien Guard’s LINQ to SQL templates. For additional details on Damien’s templates, see my Bidirectional Serialization of LINQ to SQL Object Graphs with Damien Guard’s T4 Template in VS 2008 SP1 post of 9/25/2008. (See Scott Hanselman’s T4 post in the Misc. category.)

Neil Pullinger recommends that you Always set AutoPage to true in LinqDataSource in his 10/14/2008 post. If AutoPage is false, your page retrieves all rows from the data source.

LINQ to Objects, LINQ to XML, et al.

•• Corey Roth’s My 500th Post! Left Outer Joins with LINQ post of 10/16/2008 is his 500th DotNetMafia.com - Tip of the Day item. The series began on 12/1/2004.

•• Eric Meijer and Bart De Smet conduct the centennial edition of Channel9’s Going Deep series: Erik Meijer and Bart De Smet: LINQ-to-Anything of 10/15/2008. Here’s an excerpt from the deck:

Meet Bart de Smet, a software engineer extraordinaire on the WPF team who spends his free time blogging (what an incredible wealth of truly useful technical information to be found on Bart's blog!) and creating custom LINQ providers. In fact, Bart is probably the world's most prolific LINQ provider creator, from LINQ-to-MSI to LINQ-to-Simpsons! How does he do it???

Who better to have involved in this LINQ'ified conversation (with lots of whiteboarding) than LINQ co-creator, programming languages designer, fundamentalist functional programming high priest and Channel 9 star Erik Meijer?

•• Steven Taub and Hazim Shafi contributed the “Improved Support For Parallelism In The Next Version Of Visual Studio” article to the “Coding Tools” column for MSDN Magazine’s October 2008 issue. VS 2010 will include a new viewer that offers MultiStack and Task views of parallel processes to simplify debugging:

MultiStack View (screen capture courtesy of Microsoft)

Task View (screen capture courtesy of Microsoft)

The article also describes forthcoming Concurrency, Thread Blocking, and Core Execution and Thread Migration views to analyze performance issues and aid debugging.

Steven Taub announces that .NET 4.0’s System.core.dll will include PLINQ and mscorlib.dll will contain the Parallel Extensions (ParallelFx) in his Parallel Programming and the .NET Framework 4.0 post of 10/10/2008. His Parallelism in October 2008 MSDN Magazine post of 10/2/2008 has links to articles about parallelism in MSDN Magazine’s October 2008 issue.

Kevin Hoffman’s Implementing the Weak Event Pattern in CLINQ v2.0 of 10/13/2008 describes why CLINQ requires the Weak Event Pattern (weak delegates) to avoid inadvertent memory leaks.

ADO.NET Data Services (Astoria)

Matthieu Mezil’s ADO.NET Data Services Hooking POC V3 post of 10/17/2008 continues  his Proof of Concept series about using EF as a data source for ADO.NET Data Services.

He finishes implementing the IUpdatable interface and enables the System.Collections.ObjectModel.Collection’s Count property in ADO.NET Data Services Hooking POC V3 .1 of 10/18/2008. (Repeated from the EF category.)

Note: The current v3.1 CodePlex download appears to be a T-SQL script, not source code for an IUpdatable implementation.

Phani Raju of the Astoria team discusses the reason for the use of the Astoria client’s DataServiceContext.SetLink() method for change tracking associated objects in his Viewer Mail , #1 post of 10/15/2008.

For additional background on updating associated objects with the Astoria client library, see Phani’s Working with Associations in ADO.NET Data Services post of 7/2/2008.

Tim Heuer’s Silverlight 2 Released: New controls, tools, announcements! post of 10/14/2008 says the following about support for Astoria in the RTM version:

If you have an ADO.NET Data Services (the artist formerly known as Astoria) endpoint, in your Silverlight 2 project you can choose Add Service Reference and point to that endpoint and the appropriate proxies will be generated for you.

Tim’s Silverlight and ADO.NET Data Service proxy generation post of later the same day provides more details on the use of Add Service Reference for Astoria services. (Don’t forget that the service must be running for the Add Service Reference dialog to find it.)

Shawn Wildermuth’s ADO.NET Data Services and TimeZone points out a problem with URL-encoding positive ISO 8601 time zone offsets, such as +3:00 for Bulgaria. URL encoding replaces the + with a space, which leads to an incorrect result. Applying the ToUniversalTime() method is a solution, but Shawn says “that’s a hack at best.”

ASP.NET Dynamic Data (DD)

••• Scott Hanselman unleashed a tsunami of Hanselminutes podcasts on 10/28/2008. Two of these are related to MVC, DD, and scaffolding:

•• Scott Hanselman’s ASP.NET MVC Beta released - Coolness Ensues post of 10/16/2009 (3:37 PM PDT) announces that the beta has a Go-Live license, includes jQuery, and offers a set of links into ScottGu’s “new feature” topics described in the Misc. section. ScottHa says:

I also showed [at VS Live! 2008 Las Vegas] ASP.NET+Dynamic Data that you'll be hearing more about at PDC and even more next year. You should feel free to use these subsystems as you like, mix and match, promote and ignore. Whatever makes you happy. All the ASP.NET core stuff like Authentication, Authorization, Session, Caching, etc, that all works in all of these subsystems because they are all ASP.NET.

SQL Server Data Services (SSDS) and Cloud Computing

••• Dare Obasanjo analyzes Tim Bray’s issue with vendor lock-in with cloud computing in his aptly named Cloud Computing and Vendor Lock-In post of October 19, 2008. Dare concludes:

[T]he fact is that today if a customer has heavily invested in either [the Amazon EC2/S3 or Google App Engine] platform then there isn't a straightforward way for customers to extricate themselves from the platform and switch to another vendor. In addition there is not a competitive marketplace of vendors providing standard/interoperable platforms as there are with email hosting or Web hosting providers.

As long as these conditions remain the same, it may be that lock-in is too strong a word describe the situation but it is clear that the options facing adopters of cloud computing platforms aren't great when it comes to vendor choice.

Of course the lock-in problem also applies to SSDS. If you’re willing to lock yourself into Windows Server 2008 and SQL Server 200x, Microsoft and Amazon might be interchangeable cloud hosting vendors. 

••• John Foley announces Information Week’s new “Cloud Computing Destination” in his InformationWeek Launches PlugIntoTheCloud.com post of 10/17/2008. John says:

Our research tells us that business technologists are intrigued by cloud computing, but not yet swayed. InformationWeek Analytics (our in-depth reports business) surveyed 456 business technology professionals to gauge their plans for cloud computing. Among the respondents, 20% were considering cloud services, while another 28% said they didn't know enough about them. In other words, nearly half are still mulling it over. Of the rest, 18% said they were already using cloud services and 34% had no interest.

If 18% of respondents are using cloud services and 20% are considering using them, I’d say that 38% is more than intrigued with a new and controversial technology.

••• Pete Kooman of the Google App Engine team says in his Announcing HTTPS support for appspot.com! post of 10/16/2008 that GAE will finally support secure HTTP communication, but only with appspot.com URLs. There will be no HTTPS support for arbitrary Google Apps domains.

Gartner Inc assigns the #2 Strategic Technology for 2009 to Cloud Computing in their Gartner Identifies the Top 10 Strategic Technologies for 2009 post of 10/16/2008. (Virtualization is #1).

• Eugenio Pace and Gianpaolo Carraro wrote a “Head in the Cloud, Feet on the Ground” post for Microsoft Architecture Journal, issue #17, which was posted online on 10/15/2008.

Gianpaolo excerpts liberally from the article in his Head in the cloud, Feet on the ground: an article about the cloud post of the same date to support the article’s transportation analogy to computing services, which is the underlying theme of the pair’s Cloud Services Architecture Symposium to be held on day 4 of PDC 2008.

Ken Oestreich’s Postcards from the Cloud Summit Executive Conference post of 10/14/2008 provides a detailed rundown of the Cloud Summit Executive conference held at the Computer History Museum in San Jose on the same date.

Eric Eldon announces the arrival of Cloudera, a startup specializing in helping organizations adopt the open-source Hadoop software platform in his Ex-Google, Yahoo, Facebook employees snub recession, launch Hadoop startup post of 10/14/2008. According to the post:

Cloudera will help other companies “install, configure and run” Hadoop [and MapReduce], either on a company’s own servers or using Amazon’s hosted Elastic Compute Cloud (EC2) service.

For more details, see Amr Awadallah’s The Startup is Cloudera, the Business is Hadoop MapReduce post of 10/13/2008, which has links to founders and initial employees’ blogs. Tony Bain explains the differences between Hadoop and RDBMSs in his What is Hadoop? post of October 15, 2008.

Hadoop and MapReduce are likely to be the primary competition to SQL Server Data Services (SSDS) for data sources that are extremely large (petabytes), non-structured, or both. Yahoo! and Facebook run Hadoop.

Mike Amundsen’s Strongly-typed DataSets for SSDS Demo post of 10/14/2008 to the SQL Server Data Services (SSDS) - Getting Started forum describes how to populate DataSets with SSDS entities.

However, C.C.Chai notes in a reply:

Basically, [the] Typed Data Set approach works. Its major disadvantage is preloading large amount of data in order to enable joining, grouping, etc.

When the application requires Customer Entities, I will have to load all the customers first before doing sorting / filtering. Otherwise, I could get wrong results.

The matter is even worse if you try to enforce relationship constraints in the data set. When populating a data table, you have to look for parent tables and fill those first. In my testing, I almost load all the records in my SSDS container because of the complex relationships

SQL Server Compact (SSCE) 3.5 and Sync Services

••• Steve Lasker’s Evolution or Revolution for moving to offline architectures post of 10/17/2008 is a lengthy analysis of the benefits and pitfalls of occasionally-connected systems. Steve makes reference to his earlier Sync Services forADO.NET and SQL Server Compact Presentation (8/21/2007) and his two Tech*Ed US Developers 2007 presentations plus a more recent article:

Mary Jo Foley reports in her Microsoft’s online/offline sync platform (re)released to manufacturing post of 10/17/2008 that the Sync Services team stealth-posted an updated version (RTM1) of the Microsoft Sync Framework v1.0 on 10/13/2008.

To date, there’s been no comment on the updated version in the Microsoft Sync Framework blog nor related messages in any of the five Microsoft Sync Framework forums, which is very strange. Did the original version have bugs?

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

Phil Haack’s ASP.NET MVC Beta Released! post of 10/16/2008 reiterates Scott Hanselman’s post on the same topic (see the Dynamic Data section) and notes:

As I warned before, we no longer bundle the Mvc Futures assembly (Microsoft.Web.Mvc.dll). However, we did just publish a release of this assembly updated for Beta on CodePlex. Source code for the Beta and Futures releases will be pushed to CodePlex shortly. Sorry about the delay but there’s so much work to be done here.

•• Scott Guthrie dropped the other shoe by finally posting ASP.NET MVC Beta Released at 12:30 PM PDT on 10/16/2008. His very detailed “post contains a quick summary of some of the new features and changes in this build compared to the previous ‘Preview 5’ release.

He’s “also planning to publish a few end to end tutorials in the weeks ahead that explain ASP.NET MVC concepts in more depth for folks who have not looked at it before, and who want a ‘from the beginning’ set of tutorials on how to get started.”

Robert Shelton, a Microsoft Software Development and Platform Evangelist in the Washington DC area, announced the availability of the official ASP.NET MVC Beta download in his Free download: Microsoft ASP.NET MVC Beta post of 10/15/2008.

I would have expected to see a blog post from Scott Guthrie, Scott Hanselman, or Phil Haack announcing a beta of this significance. According to Redmond Media Group editor Becky Nagle’s “Microsoft Posts ASP.NET MVC Beta for Download” article, Hanselman discussed the beta in his VS Live! 2008 Las Vegas keynote and Guthrie will make the official announcement on 10/16/2008. Regarding the keynote, Becky says:

He also showed off some of the dynamic data capabilities of MVC, including some future capabilities scheduled to be released next summer.

Scott Hanselman seconds Rob Conery’s review of the Text Template Transformation Toolkit (T4) for VS 2008 with an extensive list of links to T4 resources in his T4 (Text Template Transformation Toolkit) Code Generation - Best Kept Visual Studio Secret post of 10/14/2008.

Tim Heuer’s Silverlight 2 Released: New controls, tools, announcements! post of 10/14/2008 provides a detailed description of the new features and controls in the RTW version. Tim notes that the Silverlight Tools RC1 work with the released bits.

Rick Strahl’s detailed Client Templating with jQuery post of 10/13/2008 describes several methods for templating controls, such as displaying rich lists and updating data sources. 

Shawn Wildermuth outlines the changes between Silverlight 2 Beta 2 and the RTM version in his Silverlight 2 Released! post of 10/13/2008.

John Papa offers an abbreviated transcript of Microsoft’s conference call that announced the availability of Silverlight 2.0 RTM in his ScottGu Announces Silverlight 2 Due Out Tomorrow post of 10/13/2008. He also summarizes highlights of the related press release.

Shawn Wildermuth’s Dirty Little Secrets - Episode 2 describes how to “use control templates to skin a complex control in Silverlight 2.”

Sunday, October 12, 2008

LINQ and Entity Framework Posts for 10/6/2008+

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

Updated 10/10/2008 to 10/12/2008: Added a few items
Updated 10/9/2008 9:00 AM PDT: Added items
Updated 10/8/2008 3:00 PM PDT: Added items
• Updated 10/7/2008 5:00 PM PDT: SSCE, LINQ to XML, ASP.NET Dynamic Data, CLINQ, MVC Scaffolding

Entity Framework and Entity Data Model (EF/EDM)

Alex James has posted EDM and Store functions exposed in LINQ by Colin Meek and Diego Vega to the Entity Framework Design blog. This post describes “an extensibility mechanism that people can use to map arbitrary CLR methods to appropriate server and EDM functions” for EF v2. The authors say:

It is actually possible for us to improve our LINQ implementation so that all functions defined in the EDM and in the store, and even user defined functions, can be mapped to CLR methods with homologous signatures.

Matthieu Mezil continues his proof of concept (POC) for improving the behavior of ADO.NET Data Services with EF as the data source in his ADO.NET Data Services Hooking POC v2 post of 10/8/2008. His POC tries to resolve the following issues:

ADO.NET Team posted Migrating from LINQ to SQL to Entity Framework: Eager Loading, the first of a series about migrating from LINQ to SQL to the Entity Framework, on 10/7/2008. The team says:

This first post in the series covers Eager Loading in LINQ to SQL, and the steps for migrating to equivalent constructs in the Entity Framework in .NET 3.5 SP1. Subsequent posts will cover Deferred Loading, LINQ specifics, concurrency, mapping, stored procedure support, and other topics. As we continue to approach the next release of the Entity Framework we will revisit how some of the new features aid in migration.

Tommy Williams claims to have a new version of one or more Entity Framework Toolkits & Extensions in his UPDATED WIKI: Home post of 10/6/2008. However, I can’t find a single item that was updated after 8/12/2008. Have I gone blind?

Eric Nelson copies the tables from Elisa Flatko’s Introducing LINQ to Relational Data of January 2008 to his Q&A: Deciding between LINQ to SQL and LINQ to Entities post of 10/6/2008.

Euan Garden’s High performance loading in SSIS for Oracle and Teradata post of 10/5/2008 points to the download for SSIS Connectors for Oracle and Teradata. You’ll need the Teraddata connector to load tables into SQL Server if you’re use EF or LINQ to SQL, because there’s no EF-enabled ADO.NET managed client for TeraData (yet).

Kristofer Andersson’s Huagati DBML/EDMX Tools extend the automated Update LINQ to SQL Documentation from Database feature to Update ADO.NET Entity Data Model Documentation from Database.

This new menu choice corrects the problem Kris notes in his Tools - Part 5 - Add-ins - Documentation features in Entity Framework vs Linq-to-SQL post of 9/5/2008:

The appearance of “There are no comments for [name] in the schema” as the value of the Documentation property of each EntityType and its members.

The option automatically imports description data and adds index information from table metadata in the same manner as for LINQ to SQL data sources. (Repeated from Sunday 10/5/2008).

LINQ to SQL

•••• Rick Strahl explains how to handle LINQ to SQL errors like the following in his LINQ to SQL DBML fails to build or open post of 10/10/2008:

Error 1 Build failed due to validation errors in d:\path\filename.dbml. Open the file and resolve the issues in the Error List, then try rebuilding the project.

Rick says “The fix is to run devenv /ResetSkipPkgs.”

Daniel Crenna has completed with LINQ + WCF + Silverlight (Part Seven) his detailed seven-part series that architects a complete Silverlight 2 solution and uses LINQ to SQL as its data source. Click here for links to all seven parts.

Corey Roth’s Updating Data with LINQ to SQL and GridViews when using a View post of 10/7/2008 describes how to deal with the The Entity is not of the correct type update errors when using an SQL Server view as the data source for a LinqDataSource and bound GridView controls.

Rob Conery uses LINQ to SQL as the data source for his new SubSonic MVC Scaffold Addin released as a preview on 10/7/2008. See the Miscellaneous section for details.

LinqMaster describes the LINQ to SQL syntax to assure that the T-SQL Where criterion generated for null-valued fields uses IS NULL instead of = NULL in his How to Use "Is Null" With LINQ to SQL post of 10/6/2008.

Euan Garden’s High performance loading in SSIS for Oracle and Teradata post of 10/5/2008 points to the download for SSIS Connectors for Oracle and Teradata. You’ll need these to load Oracle or TeraData tables into SQL Server if you’re using LINQ to SQL.

See Eric Nelson’s Q&A: Deciding between LINQ to SQL and LINQ to Entities post of 10/6/2008 in the “EF/EDM” category.

LINQ to Objects, LINQ to XML, et al.

Erick White describes in his Using LINQ to XML Events and Annotations to Track if an XML Tree has Changed post of 10/12/2008 a technique to track whether a document’s XML tree has changed by doing the following:

  • Add a couple of event handlers to the XDocument. One (or both) of these event handlers will be called if any changes whatsoever are made to the tree.

  • When the event handler method is called, remove the event handlers, and add an annotation to the XDocument of type ChangedSemaphore.

  • Then, at any point in time, examine the XDocument – if it has a ChangedSemaphore annotation, the XDocument has changed. If it has no ChangedSemaphore annotation, the XDocument is unmodified.

Agnes Molnar (Aghy) announces Linq4SP - RC1 is available to download! on 10/8/2008.

• Kevin Hoffman explains in his Smart, Deep Property Notifications in CLINQ v2.0 of 10/7/2008 a new feature in forthcoming Continuous LINQ (CLINQ) v2.0 that sends property change notifications only if they affect the current CLINQ query result set. This feature cures a serious performance issue with CLINQ v1.

• Beth Massi offers links to download her LINQ to Everything and Taking Advantage of LINQ and Open XML in Office 2007 presentations to the SDN Conference in the Netherlands and their source code in her First Day at SDN Conference post of 10/7/2008.

LINQ to Everything covers only the four VS 2008 SP1 implementations: LINQ to SQL, LINQ to Entitites, LINQ to DataSet and LINQ to XML. It takes a fast shuffle to cover that much territory in a one-hour (or so) session. Shawn Wildermuth presented a Cloud Computing session at the conference.

Doug Rothaus of the VB Team shows you how to replace an XSLT transform with a VB XML literal in his VB XML Cookbook, Recipe 6: Writing an XSLT Transform in VB (Doug Rothaus) of 10/6/2008.

Eric White’s Formatting LINQ Code post of 10/6/2008 describes his preferences for formatting LINQ to SQL Queries.

Miguel de Icaza announces that Mono 2.0 has (finally) released in his Mono 2.0 Release Notes post of 10/6/2008. Mono 2.0 contains the following Microsoft-compatible API's that run on Linux, MacOX, and other Unix systems:

  • ADO.NET 2.0 API for accessing databases.
  • ASP.NET 2.0 API for developing Web-based applications.
  • Windows.Forms 2.0 API to create desktop applications.
  • System.XML 2.0: An API to manipulate XML documents.
  • System.Core: Provides support for the Language Integrated Query (LINQ).
  • System.Xml.Linq: Provides a LINQ provider for XML.
  • System.Drawing 2.0 API: A portable graphics rendering API.

Other features include:

  • C# 3.0 compiler implementation with full support for LINQ and expression trees.
  • Visual Basic 8 compiler.
  • An implementation of .Net's System.Windows.Forms namespace
  • WebBrowser based on Mozilla's Gecko HTML rendering engine.

Congratulations to all involved.

Miguel de Icaza’s DbLINQ, LINQ to Databases and Mono post of 10/2/2008 links to Atushi Enomoto’s Mono's Linq to SQL effort based on DBLinq post of the same date, which describes a LINQ to SQL clone that supports multiple RDBMSs. (Repeated from 10/2/2008).

ADO.NET Data Services (Astoria)

Shawn Wildermuth posted on 10/10/2008 links to the source code for three of his four presentations at the SDN Conference near Amsterdam in SDN Conference - Demo Code. His NE22: Inside ADO.NET Data Services session demonstrated a Silverlight front end for an Astoria data source.

Valeri Heristov demonstrates best practices for using the Telerik RadTreeView with load on demand and ADO.NET Data Service as its data source in his Silverlight TreeView Load on Demand post of 10/8/2008. The source code, which uses the Northwind sample database, is available for download.

Matthieu Mezil continues his proof of concept (POC) for improving the behavior of ADO.NET Data Services with EF as the data source in his ADO.NET Data Services Hooking POC v2 post of 10/8/2008. The full details are in the EF/EDM section.

• Adlai Maschiach’s IE – View RSS as plain XML [ADO.NET Data Services] post of 10/6/2008 shows you how to prevent IE 7 or 8 from displaying Astoria’s AtomPub output as an Atom feed. (But you already know how to do this now if you’ve used Astoria.)

Phani Raju shows you how to avoid an Astoria & IIS , HTTP 400 Bad Request on Posting Large Payloads to an Astoria Service by setting the MaxReceivedMessageSize property on the WCF binding in his 10/6/2008 post.

Aurelian Popa’s WF 4.0, WCF 4.0 and "Dublin" (Windows vNext) post of 10/6/2008 describes Dublin’s WCF REST features as follows:

The WCF REST Starter Kit is an early preview of capabilities that will be shipped with WCF in the .NET Framework 4.0. The Starter Kit provides Visual Studio project and item templates for common RESTful scenarios: REST Singleton Service, REST Collection Service, ATOM Feed Service, Atom Publishing Protocol Service and HTTP Plain XML Service. WCF already includes REST support today; the starter kit will make it even easier to get REST services up and running using WCF.

Undoubtedly Astoria v2 will take advantage of these features and might finally support POX over HTTP. I’ve been lobbying for POX over HTTP since Pablo Castro removed it from Astoria v1.

ASP.NET Dynamic Data (DD)

Steve Naughton adds custom metadata providers to the Table/Class objects in his Dynamic Data – Custom Metadata Providers post of 10/12/2008. These objects are an addition to the Column/Properties objects that Matt Berseth described in his Dynamic Data And Custom Metadata Providers of 8/24/2008.

Steve Naughton continues his Dynamic Custom PageTemplates series with Dynamic Data Custom Pages: Dynamic/Templated FromView, which exchanges the FormView for ListView control. Steve says:

Continuing on from Part 3 the same techniques will be applied to the FormView, making the FormView Dynamic and also having the facility to dynamically load user defined Templates at runtime.

Scott Hanselman’s Plug-In Hybrids: ASP.NET WebForms and ASP.MVC and ASP.NET Dynamic Data Side By Side detailed post of 10/1/2008 is intended to reduce “confusion about how ASP.NET WebForms, MVC and Dynamic Data all fit together.”

Rob Conery uses LINQ to SQL as the data source for his new SubSonic MVC Scaffold Addin released as a preview on 10/7/2008. See the Miscellaneous section for details. Rob’s project sounds to me like it will give DD a run for the money. Even if not, it’s destined to interest ASP.NET developers thinking of moving to Ruby on Rails.

DAPanther gets the ball rolling with the first episode of his promised series: ASP.NET Dynamic Data, The Beginning… (Part 1 of 2) of 10/6/2008. This part starts a Visual Basic DD app based on the AdventureWorksLT database.

Steve Naughton emulates a GridView with Insert capability in his Dynamic Data Custom Pages: Dynamic/Templated Grid with Insert (Using ListView) post of 10/5/2008.

SQL Server Data Services (SSDS) and Cloud Databases

•••• The JETLaw Blog’s What’s Hiding in the Clouds?: Privacy Issues with Cloud Computing post of 10/12/2008 expresses the concern that courts have held the privacy of information stored on the Internet to be less sacrosanct as that stored on an individual’s computer.

•••• Roger Jennings wonders when Microsoft’s Cloud Services team will start reading from the same product-naming playbook in his Windows Strata: Here Yesterday, Gone Today post of 10/10/2008.

Frank Gens produced IDC’s IT Cloud Services Forecast - 2008, 2012: A Key Driver of New Growth detailed research post of 10/8/2008. Frank says:

In this post, We offer our initial forecast of IT cloud services delivery across five major IT product segments.we offer our initial forecast of IT cloud services delivery across five major IT product segments that, in aggregate, represent almost two-thirds of enterprise IT spending (excluding PCs).  This forecast sizes IT suppliers’ opportunity to deliver their own IT offerings to customers via the cloud services model (”opportunity #1“, as described in our recent post Framing the Cloud Opportunity for IT Suppliers).

IDC expects Cloud Services spending to grow at a compounded rate (CAGR) of 27% during 2008 to 2012 versus all IT spending’s 7% CAGR. The post has numerous links to earlier IDC research items on Cloud Computing.

Long Zheng asks “Windows Strata” - name of the Microsoft cloud OS? in his post of 10/2/2008. Long says:

“Windows Strata” could be either another codename or even dare I say the final name for the “Windows Cloud” operating system Ballmer has been touting much lately as the name has recently condensed on the Microsoft Professional Developers Conference website.

Amazon Web Services has published a Overview of Security Processes whitepaper “that should help answer some initial questions about physical and operational security processes for network infrastructure controlled by AWS.” Following are two interesting points that relate to SimpleDB:

  • AWS is working with a public accounting firm to ensure continued Sarbanes Oxley
    (SOX) compliance and attain certifications such as recurring Statement on Auditing
    Standards No. 70: Service Organizations, Type II (SAS70 Type II) certification.
  • AWS customers have built HIPAA-compliant healthcare applications using S3
    and other components.

SimpleDB competitors, such as Google App Engine and SSDS, undoubtedly will be required to offer SOX and HIPAA-compliant security features.

Aral Balkan explains Why Google App Engine is broken and what Google must do to fix it in his post of 10/3/2008. The problems he cites are:

  • 1MB limit on data structures must be removed.
  • Quotas must be handled optimistically, without crippling applications at the very moment that they should be benefitting from The Cloud.
  • The "intelligent throttling" "feature" and short-term CPU quotas must be removed.
  • The 1,000 item limit for offsets in queries must be removed.
  • Support for long-running processes must be added.

Aral concludes that GAE is “25% ready for prime-time.”

SQL Server Compact (SSCE) 3.5 and Sync Services

Manikyam Bavandla’s How to: Authoring a 64-bit ClickOnce Bootstrapper package in Visual Studio 2008 SP1 of 10/6/2008 provides the details for creating a bootstrapper package for SQL Server Compact (SSCE) 3.5.

Visual Studio 2008 Service Pack 1 (General)

No posts as of 10/6/2008 9:00 AM PDT 

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

Rob Conery’s MVC Storefront Part 22: Restructuring, Rerouting, and PayPal post of 10/11/2008 includes a long screencast (~50:00) about cleaning up his routing scheme, implementing PayPal Standard, and improving appearance with CSS tweaks. Source code is available as usual.

Daniel Crenna has completed with LINQ + WCF + Silverlight (Part Seven) his detailed seven-part series that architects a complete Silverlight 2 solution and uses LINQ to SQL as its data source . Click here for links to all seven parts. (Copied from the LINQ to SQL section)

Scott Hanselman interviews Rob Conery about SubSonic and his new SubSonic MVC Scaffold Addin (see below) in Hanselminutes Show #132 of 10/2/2008.

•• John Papa has code updated to RC0 available for his Service Driven Apps with WCF and Silverlight 2 MSDN Magazine article from a link in Updated Sep 2008 MSDN Article Code for Silverlight 2 RC0 of 10/8/2008.

•• Scott Hanselman’s detailed Plug-In Hybrids: ASP.NET WebForms and ASP.MVC and ASP.NET Dynamic Data Side By Side post of 10/1/2008 is intended to reduce “confusion about how ASP.NET WebForms, MVC and Dynamic Data all fit together” (repeated from the DD section).

Rob Connery releases a 10/7/2008 preview of his SubSonic MVC Scaffold Addin, which will generate scaffolded Views and a Controller using [LINQ to SQL] similar to ASP.NET Dynamic Data. The pre-release requires MVC Preview 5. A 6:18 video with what sounds like a Roland 808 drum track on meth shows you how to get started with (what else) Northwind.

Rob says:

I didn't use SubSonic because IQueryable isn't ready to go. In addition, a LOT of people use [LINQ to SQL] and the goal here is to help as many people as I can. But I WILL be plugging in an option to use SubSonic. [Emphasis Added.]

I believe Robs new Scaffold add-in, available as an MSI or ZIP file, will give MVC a major boost.

Roger Jennings points out in his Google Analytics Data for the OakLeaf Blog, 9/4 to 10/4/2008 post of 10/5/2008 that the Oakleaf Systems blog is in the top 12% of all blogs tracked by Technorati for monthly page views and visitors and in the top 1.8% by Technorati Authority. (Repeated from 10/5/2008).

Sunday, May 04, 2008

LINQ and Entity Framework Posts for 5/1/2008+

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

Streaming LINQ Shows Potential for Complex Event Processing

Marc Adler's On Entitlements, Coral8 CCL, SQL, and LINQ post of May 4, 2008 describes difficulties he encountered in when porting an T-SQL query with two inner and two outer joins to Coral8's Continuous Computation Language (CCL) for a financial analysis project. He was able to implement the LINQ equivalent of his T-SQL query in about 10 minutes. His conclusion:

LINQ has a lot of goodness to it. LINQ is pervasive, and all flavors of LINQ are being developed. I can very well imagine that Microsoft is looking at versions of LINQ that could handle streaming data. Right now, I think that it would be fairly easy to hook up LINQ queries in a pipeline that would handle simple queries on streaming data. Adding streaming SQL constructs is very doable.

If Microsoft was to come out with a Streaming LINQ that is available as part of .NET, how would this affect the world of CEP? An immediate casualty might be NEsper.* ... But, longer term, I think that a combination of WCF, Streaming LINQ, and a version of Microsoft Analysis Services that was further geared to real-time streams would be a killer to the rest of the CEP industry.

* NEsper is an Open Source ESP/CEP Engine for .NET. ESP is an abbreviation for Event Stream Processing, which encompasses Complex Event Processing (CEP).

Marc is the technical lead for a CEP project at a major Wall Street investment bank. Entitlements in this post's context refers to persons entitled to view CEP results, not Social Security or Medicare.

In a comment to the post, Jon Riecke, Lead Platform Architect for Aleri, Inc., a CEP software vendor, mentioned that the upcoming 3.0 release of the Aleri Streaming Platform will base its pattern-matching facilities on LINQ syntax.

To find out more about CEP, tune into the Complex Event Processing Blog and Marco on CEP.

P.S. Bart De Smet just posted the final episode of his C# 3.0 Pattern Matching Series: The Return of the Pattern Matcher - Sample Code Available

Added: 5/4/2008 12:30 PDT

Andrew Matthews Updates LINQ to RDF v0.6 to VS 2008

From the How Did I Miss This Department: Andrew (a.k.a. the Wandering Glitch) released LINQ to RDF v0.6 on April 5, 2008. His Announcing LinqToRdf v0.6 post of the same date lists these improvements:]

  • LinqToRdf Designer and VS.NET 2008 extension completely rewritten
  • LinqToRdf Installer now includes the installer of LinqToRdf Designer (at no extra cost)
  • Project and Item templates now installed as part of LinqToRdf Designer
  • Generated object and data properties now get their own EntitySet or EntityRef.
  • Generates LINQ to SQL-style DataContext objects to hide query creation. Much Cleaner.

You can download LINQ to RDF v0.6 from GoogleCode.

Note: I probably missed this because there's no obvious RSS/Atom feed for the Wandering Glitch blog, only a Twitter feed.

Added: 5/4/2008 12:30 PDT

This Nine-Minute Video Gets You Up and Running with the Google App Engine

I received my Invitation to Try Google App Engine on Friday but didn't have time to try deploying my Google App Engine (GAE) SDK desktop test project until today. Fortunately, I found this 09:15 clip by a fast-talking Google Python guru on YouTube.

The clip covers building a simple UI with a Django template that stores messages in the data store and retrieves text messages by author with a GQL query. The segment on deploying the app to GAE starts at about 08:25.

Note: GoogleDevelopers has 122 videos about Google Web services, et al., including the Campfire One release presentation. If you're new to Python and like video tutorials, ShowMeDo is the place to start. Joscha Feth's Google App Engine & eclipse (PyDev) post has fully illustrated instructions for getting code completion with Eclipse, PyDev, and the GAE working.

As time permits, I plan to determine whether GAE is a contender for "data store in the cloud" status and a viable competitor to SQL Server Data Services.

Added: 5/4/2008 12:30 PDT

Colin Meek: Composing LINQ to Entities Predicates

In his LINQ to Entities: Combining Predicates post of May 2, 2008, Colin offers three choices to compensate for LINQ's lack of an Or operator when composing predicates:

  1. Chain Unions instead of Where clauses, which is inefficient.
  2. Build the predicate by hand with ParameterExpression and Expression statements, which is a pain.
  3. Write a utility function called Compose() to implement LINQ to Entities-friendly And and Or builder methods by leveraging the ParameterRebinder implementation of Matt Warren's Expression Visitor from his IQuerable Providers series.

Interesting approach.

Added: 5/3/2008 11:45 PDT

Live Mesh and LINQ to Mesh Updates

Live Mesh Blog and Forum

The Live Mesh Blog has a detailed Behind Live Mesh: How we run cloud services post of April 30, 2008 by dev lead Alex Mallet.

Early Live Mesh adopters don't seem to have found the Live Mesh Forum. It had only 145 users as of May 3, 2008 10:00 PDT.

LINQ to Mesh (From Ori Amiga's Channel9 Video)

The Mesh Operating Environment (MOE) SDK currently has Silverlight, Javascript and desktop C# libraries. (The SDK also supports IronPython, as Ori demonstrated, but not VB.) Unfortunately, the Mesh team won't say when the SDK might be available, other than vague references to PDC 2008.

Here's the sample code for a LINQ to Mesh query against a Mesh object that Ori didn't attempt to execute because of a bug found earlier (~50:00):

Mesh mesh = Mesh.Load(new Uri(@"https://preview/mesh.com"), 
                new NetworkCredential("someone@somewhere.com", "Basic", myCred))

var meshQuery = from meshObject in mesh.CreateQuery<CoreObject>()
                where meshObject.Title == "title"
                orderby meshObject.Title
                select meshObject;

According to Ori at ~51:00, "the query processor can figure out three things:

  1. Which part of the query can execute most efficiently in our back-end storage using fine-grained indices in the cloud and execute that query as close to the data as possible.
  2. In our Mesh Operating Environment, we can keep on processing and linking and querying over that data to answer the question you're asking in the LINQ query.
  3. And you can query over the data in your local machine."

SSDS and Live Mesh

Jamie Thomson's SSDS and Mesh post of May 1, 2008 proposes using Live Mesh to sync SSDS data, perhaps even between two Authorities. Here's the story on potential SSDS and Live Mesh interop:

  • Pablo Castro and the Astoria team are working on a sync model for "Astoria Offline."
  • The SSDS team said they "will support the full EDM/EF/ADO.Net V3 model in due time."
  • Nigel Ellis demonstrated in his Introducing SQL Server Data Services session at MIX08 using the Sync Framework to synchronize vCard contact data between Microsoft Access 2007 and SSDS v1.
  • Francois Ajenstadt, director of project management for SQL Server, said "The goal is to bring the API's between SSDS and Astoria closer together closer to Release."
  • Ari Amiga says the Mesh team has been "working a lot with the Astoria team to make sure that our query syntax is the same, our URL syntax is the same, so it all looks nice and beautiful."
  • Astoria now uses, Mesh supports and SSDS will support the Atom Publication Protocol (AtomPub).

Added: 5/3/2008 10:30 PDT

ADO.NET Data Services Article in Visual Studio Magazine

My "Manipulate Data in the Cloud with ADO.NET [Data Services]" is the cover story for Visual Studio Magazine's May 2008 issue. Here's the deck:

ADO.NET Data Services (formerly code-named "Project Astoria") delivers data from relational tables and Windows Live services to Web mashups and Visual Studio 2008 projects, including ASP.NET AJAX and Silverlight 2.0 rich Internet applications, as Representational State Transfer (REST) resources over HTTP in response to URI-based requests or LINQ to REST queries.

Mesh Connection: At about 50:00 into the Ori Amiga: Programming the Mesh Channel 9 video segment of April 24, 2008 Ori mentions that the Mesh team is working with the Astoria folks to make sure their query and URL syntaxes are the same.

Related Topics: John Udell suggests taking advantage of Astoria's record-level URL addressability to implement loosely-coupled collaborative list-making in his Stonewall Farm, Darby Brook Farm, and the collaborative curation of data post of May 2, 2008. Because of its flexible entity feature (ad-hoc addition of attributes to an entity) SQL Server Data Services might be even a better choice when the SSDS team enables offering public read-only access to a container.

Moved: 5/3/2008 to Manipulate Data in the Cloud with ADO.NET [Data Services] due to length.

Kevin Hoffman Releases Continuous LINQ (CLINQ) v.1.1

According to Kevin's CLINQ v1.1.0.0 Released! post of May 2, 2008, CLINQ 1.1 now includes:

  • Support for Continuous Aggregation. Now, in addition to being able to have your result sets automatically update themselves in response to changes in the source set as well as changes to items in the source set, you can have aggregate scalar values that continuously update in the same fashion. The following is a list of the supported aggregation types that can now be done continuously:
    • Average
    • Min
    • Max
    • Sum
    • Standard Deviation
    • Count
  • Brand new demo application. This demo application not only shows off the power of continuous queries and WPF data binding, but also shows you how to use continuous aggregates, create your own continuous aggregates, and how to databind a WPF GUI to a continuous aggregate value.
His post has a screen shot of the Stock Monitor demo application in action.

Added: 5/2/2008 10:30 PDT

Jeff Currier Wants Questions to Address in SSDS Best Practices Tech*Ed Session

Jeff says in his Speaking at TechEd post of May 1, 2008:

I'm heading down to Orlando in a couple of weeks to give a talk about best practices when it comes to SSDS.  I'm working on my talk outline and was curious if there were any topics in particular that the community wanted to hear about in the talk?

I've posted my topics in a comment.

Jeff's session is "Best Practices in Building Applications with Microsoft SQL Server Data Services," which has the following description:

This interactive session provides a hands-on roadmap for developing and managing applications that use Microsoft SQL Server Data Services (SSDS), details best coding practices, and answers questions related to using on-demand storage services for business solutions.

This appears to be the sole SSDS session at Tech*Ed 2008.

Added: 5/2/2008 10:00 PDT

Popularity of SaaS/PaaS and Web Services/SOA Gain 1% Over 2006 According to McKinsey/Sandhill Survey

This 19-page Enterprise Software Customer Survey 2008 report by consultants McKinsey & Co. and Sandhill Partners finds that:

Innovation in the software industry is on the upswing, with Software as a Service (SaaS) being a key driver. The SaaS model is becoming mainstream and this has led to the rise of a new generation of SaaS platforms (also referred to in the industry as Platform as a Service – PaaS).

The distribution of 857 responses to "Please select the most important trend impacting your business" are shown in the following table for 2006 and 2008:

Most Important Trend, Percent 2006 2008
SaaS/SaaS or PaaS Platform 30 31
Web Services/Service Oriented Architecture 24 25
Open Source 10 8
Offshoring/Globalization 15 13
Software Industry Consolidation 17 7
Others 4 16

A detailed analysis of SaaS/PaaS platforms, which include "cloud computing" starts on page 5. Page 6 concludes:

The momentum toward adoption of SaaS platforms is surprising. Nearly three-quarters of the companies surveyed prefer to adopt platforms in at least one of the three archetypes we identify here.

For platform vendors, the only falloff in interest comes at the largest enterprises, those employing more than 25,000 people. In short, nearly every company – or division of a larger enterprise – is a customer or a prospect for SaaS platforms.

Exhibits on pages 6 - 9 provide additional details on interest in various models SaaS/PaaS models.

BEA's Understanding the Cloud Computing/SaaS/PaaS markets: a Map of the Players in the Industry post of May 2, 2008 by Peter Laird and Kent Dickson has clear definitions of cloud computing, SaaS, PaaS, and Core Cloud Services, as well as a map and list of major players with links to their sites.

Added: 5/2/2008 11:30 PST

SSDS Finally Provisioning Private Beta Users at a Faster Pace

KellyAlt says in Onboarding early beta customers of May 2, 2008:

Over the past 4 weeks, we have been onboarding customers slowly.  Since the response to our restricted beta invitation was quite overwhelming, quite a few of you will experience some delays in getting an account.  The SSDS team is doing everything possible to get you onboarded as soon as possible.  I am happy to say that I am seeing the pace pick up a bit over the last week.

I've been working with SSDS for about three weeks and have written a WinForm test harness to give SSDS v1 a thorough workout. Here's the UI when using the REST protocol to upload a Northwind Employee entity with a base64Binary-encoded bitmap:

Watch for my "Test-Drive SQL Server Data Services" feature article coming in the July 2008 issue of Visual Studio Magazine, which will include complete C# source code for the test harness.

Added: 5/2/2008 08:30 PDT

Ryan Dunn Interviews Tudor Toma and Soumitra Sangupta About the Business Value of SSDS

In Channel9's Tudor Toma and Soumitra Sengupta: SQL Server Data Services Business Value segment of May 1, 2008 (28:19):

Ryan sits down and talks with the Group Program Manager Tudor Toma and Architect Soumitra Sengupta about the business value of SSDS.

Added: 5/1/2008 17:00 PDT

David DeWinter Adapts T4 Templates to Generate T-SQL Stored Procedure Scripts for Entity Data Models

The Text Template Transformation Toolkit (commonly called T4) is a free Microsoft code generation engine for VS 2005 and later that supports their Domain Specific Languages and Software Factories toolkits. The Hilton Giesenow and Oleg Sych blogs have posts about T4.

David's Entity Framework Stored Procedure Generation post of April 26, 2008 describes the template:

The T4 template we created is designed to be a general purpose way to generate CUD procedures for an Entity Framework model. ...

The template not only generates EF-compliant sprocs, but it also considers only the tables that are in the SSDL of the model file. Unfortunately, the template must query the database (SQL Server 2005 only!) in order to make all the decisions necessary to create the output file. However, this is usually quite fast on generations other than the first one.

The template would have been a big time saver when I wrote 40+ stored procedures for my forthcoming book's test project.

Added: 5/1/2008 13:40 PDT

Rick Strahl Posts LINQ to SQL and WCF JSON/REST Samples from His ASP.NET Connections Presentations

Rick's ASP.NET Connections Slides and Samples Posted item of May 1, 2008 provides links to sample code and PowerPoint slides from his three presentations at the ASP.NET Connections conference in Orlando. Following are Rick's abstracts of the sessions:

Building a LINQ to SQL Business Layer for ASP.NET Applications

LINQ to SQL - although completely object based, is still little more than a sophisticated data access layer and so a business object layer is still needed to abstract business logic and provide common functionality that every business related entity requires. The business layer provides a few high level abstractions to the CRUD layer as well as a host of low level features that allow better control for low level data access in case LINQ to SQL queries are ill suited for queries and operations that cannot be performed with LINQ to SQL at all.

This session and its sample code is the culmination of Rick's extensive writing about LINQ to SQL in enterprise-grade projects.

WCF 3.5 JSON and REST Services

WCF 3.5's AJAX support has been made nearly as easy and comprehensive as ASMX functionality and there are many options of how data can be accessed over HTTP now with official protocol support for the webHttpBinding. This session starts of with examples of pure REST URLS and demonstrates features like URL templating, different response formats (wrapped, bare, XML, JSON) as well as the various different options for serving in this fashion. There are also examples of serving up raw data such as images or HTML content out of the REST based API. The remainder of the session focuses on AJAX functionality and explores different ways that WCF services can be called.

If you're interested in ADO.NET Data Objects, which support WCF JSON and REST protocols, don't miss this session.

Ajax Alternatives: Using jQuery with ASP.NET

Off-topic for this blog, but very interesting if you're into AJAX.

Note: Slides are the last file in the ZIP containers.

Frans Bouma Adds LINQ to SQL Refactoring and ASP.NET Dynamic Data Support to LLBLGen Pro

LLBLGen Pro has its own native LINQ implementation, but Frans announces in his Linq to Sql support added to LLBLGen Pro post of May 1, 2008 that latest version (2.6 beta) of LLBLGen Pro includes templates for generating LINQ to SQL classes and mapping (*.dbml) files.

This means you can use LLBLGen Pro's code generator to update your LINQ to SQL data model from SQL Server metadata automatically. Microsoft's LINQ to SQL implementation requires manually updating the data model for schema changes. (ADO.NET Entity Framework's Model Browser has an Update Model from Database context menu command.)

Frans says, "The only downside is that you can't update your model in the Linq to Sql designer anymore. But, why would you?"

LLBLGen Pro ASP.NET Dynamic Data Support

Frans' Dynamic Data and 3rd party o/r mappers is a fact post of May 1, 2008 describes how he convinced Scott Guthrie to open ASP.NET Dynamic Data products to third-party object/relational mapping (O/RM) tools, which in turn enables substituting LLBLGen Pro for LINQ to SQL or Entity Framework.

Steele Price Finds LINQ to SQL Frustrating

In his Some of my frustrations with Linq to Sql post of May 1, 2008, Steel Price complains about:

  • Duplication of the "one" object of a many:one association (such as a Customer for a new Order) with the InsertOnSubmit() method if the entity has both an ID field and association.
  • Lack of a method of assuring that deletions precede insertions with multiple updates to the DataContext.
  • Loading an Association does not automatically set the ID if that field is also in the map.

These are legitimate issues that the LINQ to SQL team should fix in VS 2008 SP1.

LINQ to SQLite Accepted as a Google Summer of Code Project

Kevin Kubasik, who wrote a fledgling LINQ to SQLite provider, reports in his Mono GSOC Projects: Linq to SQLite post of May 1, 2008 that he "noticed that one of the accepted proposals for the Mono project is to create a LINQ provider for SQLite."

This project appears to be related to the "Linq to SQL for open source databases" topic of Mono's Student Projects page and is listed in Current Projects on Google Code's Mono Project page.

An Open Source Project for a SQLMetal.exe and SQL Server Compact Edition 3.5 UI

LINQ to SQL's graphic designer doesn't support SQL Server Compact Edition (SSCE) 3.5, so you must use the SQLMetal.exe command-line tool to create LINQ to SQL classes for *.sdf database files.

J. Torres has started a open source project on CodePlex to create a front end for SQLMetal.exe that's compatible with SSCE 3.5.

However, it's a good bet that SSCE 3.5 support will be included in VS 2008 SP1, so the project might have a short shelf life.

Derek Whittaker Explains How to Group LINQ to SQL Sequences on Multiple Columns

Derek explains in his Multi-Column Grouping with Linq2Sql post of April 30, 2008 how to write the LINQ to SQL equivalent of the following T-SQL query.

SELECT  COUNT(*) AS Count,   
        cs.SendID,   
        cs.Name AS SendName,   
        cts.ListID,   
        cts.ListName,   
        ctom.EmailAddress   
FROM    CampaignTrackingOpenedMail AS ctom   
        INNER JOIN CampaignTrackingSummary AS cts    
            ON ctom.CampaignTrackingSummaryID = cts.[ID]   
        INNER JOIN CampaignSend AS cs    
            ON cts.SendID = cs.SendID   
GROUP BY cs.SendID,   
        cs.Name,   
        cts.ListID,   
        cts.ListName,   
        ctom.EmailAddress  

The translation isn't obvious.

Alex James Starts a Fantasy Football Project with Entity Framework as the Data Source

Back in late March, Alex published his Statement of Intent:

I'm going to start creating 'real world' applications using the Entity Framework, and I'm going to blog about all the tradeoffs I make, the hoops I have to jump through, the gotcha's I encounter, the workarounds, the design considerations etc.

In Real world App - Part 1 - Choosing an Application of April 30, 2008, Alex decides on Fantasy Soccer (a.k.a. Fantasy Football).

In Fantasy Soccer - Part 2 - an overview of the rules of May 1, 2008, Alex says:

At this stage only one thing is certain, it will use the Entity Framework for data access.

Fantasy Soccer - part 3 - Unit of Measure of May 3, 2008 discusses using the Entity Data Model's ComplexProperty feature to handle issues with English versus metric measurements and using a helper class to enable sorting by a scaled value, such as weight in lbs. or kg. (Stones for en-uk?>

Updated: May 3, 2008

The clip covers building a simple UI with a Django template that stores messages in the data store and retrieves text messages by author with a GQL query. The segment on deploying the app to GAE starts at about 08:25.

Note: GoogleDevelopers has 122 videos about Google Web services, et al., including the Campfire One release presentation. If you're new to Python and like video tutorials, ShowMeDo is the place to start. Joscha Feth's Google App Engine & eclipse (PyDev) post has fully illustrated instructions for getting code completion with Eclipse, PyDev, and the GAE working.

As time permits, I plan to determine whether GAE is a contender for "data store in the cloud" status and a viable competitor to SQL Server Data Services.

Added: 5/4/2008 12:30 PDT

Colin Meek: Composing LINQ to Entities Predicates

In his LINQ to Entities: Combining Predicates post of May 2, 2008, Colin offers three choices to compensate for LINQ's lack of an Or operator when composing predicates:

  1. Chain Unions instead of Where clauses, which is inefficient.
  2. Build the predicate by hand with ParameterExpression and Expression statements, which is a pain.
  3. Write a utility function called Compose() to implement LINQ to Entities-friendly And and Or builder methods by leveraging the ParameterRebinder implementation of Matt Warren's Expression Visitor from his IQuerable Providers series.

Interesting approach.

Added: 5/3/2008 11:45 PDT

Live Mesh and LINQ to Mesh Updates

Live Mesh Blog and Forum

The Live Mesh Blog has a detailed Behind Live Mesh: How we run cloud services post of April 30, 2008 by dev lead Alex Mallet.

Early Live Mesh adopters don't seem to have found the Live Mesh Forum. It had only 145 users as of May 3, 2008 10:00 PDT.

LINQ to Mesh (From Ori Amiga's Channel9 Video)

The Mesh Operating Environment (MOE) SDK currently has Silverlight, Javascript and desktop C# libraries. (The SDK also supports IronPython, as Ori demonstrated, but not VB.) Unfortunately, the Mesh team won't say when the SDK might be available, other than vague references to PDC 2008.

Here's the sample code for a LINQ to Mesh query against a Mesh object that Ori didn't attempt to execute because of a bug found earlier (~50:00):

Mesh mesh = Mesh.Load(new Uri(@"https://preview/mesh.com"), 
                new NetworkCredential("someone@somewhere.com", "Basic", myCred))

var meshQuery = from meshObject in mesh.CreateQuery<CoreObject>()
                where meshObject.Title == "title"
                orderby meshObject.Title
                select meshObject;

According to Ori at ~51:00, "the query processor can figure out three things:

  1. Which part of the query can execute most efficiently in our back-end storage using fine-grained indices in the cloud and execute that query as close to the data as possible.
  2. In our Mesh Operating Environment, we can keep on processing and linking and querying over that data to answer the question you're asking in the LINQ query.
  3. And you can query over the data in your local machine."

SSDS and Live Mesh

Jamie Thomson's SSDS and Mesh post of May 1, 2008 proposes using Live Mesh to sync SSDS data, perhaps even between two Authorities. Here's the story on potential SSDS and Live Mesh interop:

  • Pablo Castro and the Astoria team are working on a sync model for "Astoria Offline."
  • The SSDS team said they "will support the full EDM/EF/ADO.Net V3 model in due time."
  • Nigel Ellis demonstrated in his Introducing SQL Server Data Services session at MIX08 using the Sync Framework to synchronize vCard contact data between Microsoft Access 2007 and SSDS v1.
  • Francois Ajenstadt, director of project management for SQL Server, said "The goal is to bring the API's between SSDS and Astoria closer together closer to Release."
  • Ari Amiga says the Mesh team has been "working a lot with the Astoria team to make sure that our query syntax is the same, our URL syntax is the same, so it all looks nice and beautiful."
  • Astoria now uses, Mesh supports and SSDS will support the Atom Publication Protocol (AtomPub).

Added: 5/3/2008 10:30 PDT

ADO.NET Data Services Article in Visual Studio Magazine

My "Manipulate Data in the Cloud with ADO.NET [Data Services]" is the cover story for Visual Studio Magazine's May 2008 issue. Here's the deck:

ADO.NET Data Services (formerly code-named "Project Astoria") delivers data from relational tables and Windows Live services to Web mashups and Visual Studio 2008 projects, including ASP.NET AJAX and Silverlight 2.0 rich Internet applications, as Representational State Transfer (REST) resources over HTTP in response to URI-based requests or LINQ to REST queries.

Mesh Connection: At about 50:00 into the Ori Amiga: Programming the Mesh Channel 9 video segment of April 24, 2008 Ori mentions that the Mesh team is working with the Astoria folks to make sure their query and URL syntaxes are the same.

Related Topics: John Udell suggests taking advantage of Astoria's record-level URL addressability to implement loosely-coupled collaborative list-making in his Stonewall Farm, Darby Brook Farm, and the collaborative curation of data post of May 2, 2008. Because of its flexible entity feature (ad-hoc addition of attributes to an entity) SQL Server Data Services might be even a better choice when the SSDS team enables offering public read-only access to a container.

Moved: 5/3/2008 to Manipulate Data in the Cloud with ADO.NET [Data Services] due to length.

Kevin Hoffman Releases Continuous LINQ (CLINQ) v.1.1

According to Kevin's CLINQ v1.1.0.0 Released! post of May 2, 2008, CLINQ 1.1 now includes:

  • Support for Continuous Aggregation. Now, in addition to being able to have your result sets automatically update themselves in response to changes in the source set as well as changes to items in the source set, you can have aggregate scalar values that continuously update in the same fashion. The following is a list of the supported aggregation types that can now be done continuously:
    • Average
    • Min
    • Max
    • Sum
    • Standard Deviation
    • Count
  • Brand new demo application. This demo application not only shows off the power of continuous queries and WPF data binding, but also shows you how to use continuous aggregates, create your own continuous aggregates, and how to databind a WPF GUI to a continuous aggregate value.
His post has a screen shot of the Stock Monitor demo application in action.

Added: 5/2/2008 10:30 PDT

Jeff Currier Wants Questions to Address in SSDS Best Practices Tech*Ed Session

Jeff says in his Speaking at TechEd post of May 1, 2008:

I'm heading down to Orlando in a couple of weeks to give a talk about best practices when it comes to SSDS.  I'm working on my talk outline and was curious if there were any topics in particular that the community wanted to hear about in the talk?

I've posted my topics in a comment.

Jeff's session is "Best Practices in Building Applications with Microsoft SQL Server Data Services," which has the following description:

This interactive session provides a hands-on roadmap for developing and managing applications that use Microsoft SQL Server Data Services (SSDS), details best coding practices, and answers questions related to using on-demand storage services for business solutions.

This appears to be the sole SSDS session at Tech*Ed 2008.

Added: 5/2/2008 10:00 PDT

Popularity of SaaS/PaaS and Web Services/SOA Gain 1% Over 2006 According to McKinsey/Sandhill Survey

This 19-page Enterprise Software Customer Survey 2008 report by consultants McKinsey & Co. and Sandhill Partners finds that:

Innovation in the software industry is on the upswing, with Software as a Service (SaaS) being a key driver. The SaaS model is becoming mainstream and this has led to the rise of a new generation of SaaS platforms (also referred to in the industry as Platform as a Service – PaaS).

The distribution of 857 responses to "Please select the most important trend impacting your business" are shown in the following table for 2006 and 2008:

Most Important Trend, Percent 2006 2008
SaaS/SaaS or PaaS Platform 30 31
Web Services/Service Oriented Architecture 24 25
Open Source 10 8
Offshoring/Globalization 15 13
Software Industry Consolidation 17 7
Others 4 16

A detailed analysis of SaaS/PaaS platforms, which include "cloud computing" starts on page 5. Page 6 concludes:

The momentum toward adoption of SaaS platforms is surprising. Nearly three-quarters of the companies surveyed prefer to adopt platforms in at least one of the three archetypes we identify here.

For platform vendors, the only falloff in interest comes at the largest enterprises, those employing more than 25,000 people. In short, nearly every company – or division of a larger enterprise – is a customer or a prospect for SaaS platforms.

Exhibits on pages 6 - 9 provide additional details on interest in various models SaaS/PaaS models.

BEA's Understanding the Cloud Computing/SaaS/PaaS markets: a Map of the Players in the Industry post of May 2, 2008 by Peter Laird and Kent Dickson has clear definitions of cloud computing, SaaS, PaaS, and Core Cloud Services, as well as a map and list of major players with links to their sites.

Added: 5/2/2008 11:30 PST

SSDS Finally Provisioning Private Beta Users at a Faster Pace

KellyAlt says in Onboarding early beta customers of May 2, 2008:

Over the past 4 weeks, we have been onboarding customers slowly.  Since the response to our restricted beta invitation was quite overwhelming, quite a few of you will experience some delays in getting an account.  The SSDS team is doing everything possible to get you onboarded as soon as possible.  I am happy to say that I am seeing the pace pick up a bit over the last week.

I've been working with SSDS for about three weeks and have written a WinForm test harness to give SSDS v1 a thorough workout. Here's the UI when using the REST protocol to upload a Northwind Employee entity with a base64Binary-encoded bitmap:

Watch for my "Test-Drive SQL Server Data Services" feature article coming in the July 2008 issue of Visual Studio Magazine, which will include complete C# source code for the test harness.

Added: 5/2/2008 08:30 PDT

Ryan Dunn Interviews Tudor Toma and Soumitra Sangupta About the Business Value of SSDS

In Channel9's Tudor Toma and Soumitra Sengupta: SQL Server Data Services Business Value segment of May 1, 2008 (28:19):

Ryan sits down and talks with the Group Program Manager Tudor Toma and Architect Soumitra Sengupta about the business value of SSDS.

Added: 5/1/2008 17:00 PDT

David DeWinter Adapts T4 Templates to Generate T-SQL Stored Procedure Scripts for Entity Data Models

The Text Template Transformation Toolkit (commonly called T4) is a free Microsoft code generation engine for VS 2005 and later that supports their Domain Specific Languages and Software Factories toolkits. The Hilton Giesenow and Oleg Sych blogs have posts about T4.

David's Entity Framework Stored Procedure Generation post of April 26, 2008 describes the template:

The T4 template we created is designed to be a general purpose way to generate CUD procedures for an Entity Framework model. ...

The template not only generates EF-compliant sprocs, but it also considers only the tables that are in the SSDL of the model file. Unfortunately, the template must query the database (SQL Server 2005 only!) in order to make all the decisions necessary to create the output file. However, this is usually quite fast on generations other than the first one.

The template would have been a big time saver when I wrote 40+ stored procedures for my forthcoming book's test project.

Added: 5/1/2008 13:40 PDT

Rick Strahl Posts LINQ to SQL and WCF JSON/REST Samples from His ASP.NET Connections Presentations

Rick's ASP.NET Connections Slides and Samples Posted item of May 1, 2008 provides links to sample code and PowerPoint slides from his three presentations at the ASP.NET Connections conference in Orlando. Following are Rick's abstracts of the sessions:

Building a LINQ to SQL Business Layer for ASP.NET Applications

LINQ to SQL - although completely object based, is still little more than a sophisticated data access layer and so a business object layer is still needed to abstract business logic and provide common functionality that every business related entity requires. The business layer provides a few high level abstractions to the CRUD layer as well as a host of low level features that allow better control for low level data access in case LINQ to SQL queries are ill suited for queries and operations that cannot be performed with LINQ to SQL at all.

This session and its sample code is the culmination of Rick's extensive writing about LINQ to SQL in enterprise-grade projects.

WCF 3.5 JSON and REST Services

WCF 3.5's AJAX support has been made nearly as easy and comprehensive as ASMX functionality and there are many options of how data can be accessed over HTTP now with official protocol support for the webHttpBinding. This session starts of with examples of pure REST URLS and demonstrates features like URL templating, different response formats (wrapped, bare, XML, JSON) as well as the various different options for serving in this fashion. There are also examples of serving up raw data such as images or HTML content out of the REST based API. The remainder of the session focuses on AJAX functionality and explores different ways that WCF services can be called.

If you're interested in ADO.NET Data Objects, which support WCF JSON and REST protocols, don't miss this session.

Ajax Alternatives: Using jQuery with ASP.NET

Off-topic for this blog, but very interesting if you're into AJAX.

Note: Slides are the last file in the ZIP containers.

Frans Bouma Adds LINQ to SQL Refactoring and ASP.NET Dynamic Data Support to LLBLGen Pro

LLBLGen Pro has its own native LINQ implementation, but Frans announces in his Linq to Sql support added to LLBLGen Pro post of May 1, 2008 that latest version (2.6 beta) of LLBLGen Pro includes templates for generating LINQ to SQL classes and mapping (*.dbml) files.

This means you can use LLBLGen Pro's code generator to update your LINQ to SQL data model from SQL Server metadata automatically. Microsoft's LINQ to SQL implementation requires manually updating the data model for schema changes. (ADO.NET Entity Framework's Model Browser has an Update Model from Database context menu command.)

Frans says, "The only downside is that you can't update your model in the Linq to Sql designer anymore. But, why would you?"

LLBLGen Pro ASP.NET Dynamic Data Support

Frans' Dynamic Data and 3rd party o/r mappers is a fact post of May 1, 2008 describes how he convinced Scott Guthrie to open ASP.NET Dynamic Data products to third-party object/relational mapping (O/RM) tools, which in turn enables substituting LLBLGen Pro for LINQ to SQL or Entity Framework.

Steele Price Finds LINQ to SQL Frustrating

In his Some of my frustrations with Linq to Sql post of May 1, 2008, Steel Price complains about:

  • Duplication of the "one" object of a many:one association (such as a Customer for a new Order) with the InsertOnSubmit() method if the entity has both an ID field and association.
  • Lack of a method of assuring that deletions precede insertions with multiple updates to the DataContext.
  • Loading an Association does not automatically set the ID if that field is also in the map.

These are legitimate issues that the LINQ to SQL team should fix in VS 2008 SP1.

LINQ to SQLite Accepted as a Google Summer of Code Project

Kevin Kubasik, who wrote a fledgling LINQ to SQLite provider, reports in his Mono GSOC Projects: Linq to SQLite post of May 1, 2008 that he "noticed that one of the accepted proposals for the Mono project is to create a LINQ provider for SQLite."

This project appears to be related to the "Linq to SQL for open source databases" topic of Mono's Student Projects page and is listed in Current Projects on Google Code's Mono Project page.

An Open Source Project for a SQLMetal.exe and SQL Server Compact Edition 3.5 UI

LINQ to SQL's graphic designer doesn't support SQL Server Compact Edition (SSCE) 3.5, so you must use the SQLMetal.exe command-line tool to create LINQ to SQL classes for *.sdf database files.

J. Torres has started a open source project on CodePlex to create a front end for SQLMetal.exe that's compatible with SSCE 3.5.

However, it's a good bet that SSCE 3.5 support will be included in VS 2008 SP1, so the project might have a short shelf life.

Derek Whittaker Explains How to Group LINQ to SQL Sequences on Multiple Columns

Derek explains in his Multi-Column Grouping with Linq2Sql post of April 30, 2008 how to write the LINQ to SQL equivalent of the following T-SQL query.

SELECT  COUNT(*) AS Count,   
        cs.SendID,   
        cs.Name AS SendName,   
        cts.ListID,   
        cts.ListName,   
        ctom.EmailAddress   
FROM    CampaignTrackingOpenedMail AS ctom   
        INNER JOIN CampaignTrackingSummary AS cts    
            ON ctom.CampaignTrackingSummaryID = cts.[ID]   
        INNER JOIN CampaignSend AS cs    
            ON cts.SendID = cs.SendID   
GROUP BY cs.SendID,   
        cs.Name,   
        cts.ListID,   
        cts.ListName,   
        ctom.EmailAddress  

The translation isn't obvious.

Alex James Starts a Fantasy Football Project with Entity Framework as the Data Source

Back in late March, Alex published his Statement of Intent:

I'm going to start creating 'real world' applications using the Entity Framework, and I'm going to blog about all the tradeoffs I make, the hoops I have to jump through, the gotcha's I encounter, the workarounds, the design considerations etc.

In Real world App - Part 1 - Choosing an Application of April 30, 2008, Alex decides on Fantasy Soccer (a.k.a. Fantasy Football).

In Fantasy Soccer - Part 2 - an overview of the rules of May 1, 2008, Alex says:

At this stage only one thing is certain, it will use the Entity Framework for data access.

Fantasy Soccer - part 3 - Unit of Measure of May 3, 2008 discusses using the Entity Data Model's ComplexProperty feature to handle issues with English versus metric measurements and using a helper class to enable sorting by a scaled value, such as weight in lbs. or kg. (Stones for en-uk?>

Updated: May 3, 2008

The clip covers building a simple UI with a Django template that stores messages in the data store and retrieves text messages by author with a GQL query. The segment on deploying the app to GAE starts at about 08:25.

Note: GoogleDevelopers has 122 videos about Google Web services, et al., including the Campfire One release presentation. If you're new to Python and like video tutorials, ShowMeDo is the place to start. Joscha Feth's Google App Engine & eclipse (PyDev) post has fully illustrated instructions for getting code completion with Eclipse, PyDev, and the GAE working.

As time permits, I plan to determine whether GAE is a contender for "data store in the cloud" status and a viable competitor to SQL Server Data Services.

Added: 5/4/2008 12:30 PDT

Colin Meek: Composing LINQ to Entities Predicates

In his LINQ to Entities: Combining Predicates post of May 2, 2008, Colin offers three choices to compensate for LINQ's lack of an Or operator when composing predicates:

  1. Chain Unions instead of Where clauses, which is inefficient.
  2. Build the predicate by hand with ParameterExpression and Expression statements, which is a pain.
  3. Write a utility function called Compose() to implement LINQ to Entities-friendly And and Or builder methods by leveraging the ParameterRebinder implementation of Matt Warren's Expression Visitor from his IQuerable Providers series.

Interesting approach.

Added: 5/3/2008 11:45 PDT

Live Mesh and LINQ to Mesh Updates

Live Mesh Blog and Forum

The Live Mesh Blog has a detailed Behind Live Mesh: How we run cloud services post of April 30, 2008 by dev lead Alex Mallet.

Early Live Mesh adopters don't seem to have found the Live Mesh Forum. It had only 145 users as of May 3, 2008 10:00 PDT.

LINQ to Mesh (From Ori Amiga's Channel9 Video)

The Mesh Operating Environment (MOE) SDK currently has Silverlight, Javascript and desktop C# libraries. (The SDK also supports IronPython, as Ori demonstrated, but not VB.) Unfortunately, the Mesh team won't say when the SDK might be available, other than vague references to PDC 2008.

Here's the sample code for a LINQ to Mesh query against a Mesh object that Ori didn't attempt to execute because of a bug found earlier (~50:00):

Mesh mesh = Mesh.Load(new Uri(@"https://preview/mesh.com"), 
                new NetworkCredential("someone@somewhere.com", "Basic", myCred))

var meshQuery = from meshObject in mesh.CreateQuery<CoreObject>()
                where meshObject.Title == "title"
                orderby meshObject.Title
                select meshObject;

According to Ori at ~51:00, "the query processor can figure out three things:

  1. Which part of the query can execute most efficiently in our back-end storage using fine-grained indices in the cloud and execute that query as close to the data as possible.
  2. In our Mesh Operating Environment, we can keep on processing and linking and querying over that data to answer the question you're asking in the LINQ query.
  3. And you can query over the data in your local machine."

SSDS and Live Mesh

Jamie Thomson's SSDS and Mesh post of May 1, 2008 proposes using Live Mesh to sync SSDS data, perhaps even between two Authorities. Here's the story on potential SSDS and Live Mesh interop:

  • Pablo Castro and the Astoria team are working on a sync model for "Astoria Offline."
  • The SSDS team said they "will support the full EDM/EF/ADO.Net V3 model in due time."
  • Nigel Ellis demonstrated in his Introducing SQL Server Data Services session at MIX08 using the Sync Framework to synchronize vCard contact data between Microsoft Access 2007 and SSDS v1.
  • Francois Ajenstadt, director of project management for SQL Server, said "The goal is to bring the API's between SSDS and Astoria closer together closer to Release."
  • Ari Amiga says the Mesh team has been "working a lot with the Astoria team to make sure that our query syntax is the same, our URL syntax is the same, so it all looks nice and beautiful."
  • Astoria now uses, Mesh supports and SSDS will support the Atom Publication Protocol (AtomPub).

Added: 5/3/2008 10:30 PDT

ADO.NET Data Services Article in Visual Studio Magazine

My "Manipulate Data in the Cloud with ADO.NET [Data Services]" is the cover story for Visual Studio Magazine's May 2008 issue. Here's the deck:

ADO.NET Data Services (formerly code-named "Project Astoria") delivers data from relational tables and Windows Live services to Web mashups and Visual Studio 2008 projects, including ASP.NET AJAX and Silverlight 2.0 rich Internet applications, as Representational State Transfer (REST) resources over HTTP in response to URI-based requests or LINQ to REST queries.

Mesh Connection: At about 50:00 into the Ori Amiga: Programming the Mesh Channel 9 video segment of April 24, 2008 Ori mentions that the Mesh team is working with the Astoria folks to make sure their query and URL syntaxes are the same.

Related Topics: John Udell suggests taking advantage of Astoria's record-level URL addressability to implement loosely-coupled collaborative list-making in his Stonewall Farm, Darby Brook Farm, and the collaborative curation of data post of May 2, 2008. Because of its flexible entity feature (ad-hoc addition of attributes to an entity) SQL Server Data Services might be even a better choice when the SSDS team enables offering public read-only access to a container.

Moved: 5/3/2008 to Manipulate Data in the Cloud with ADO.NET [Data Services] due to length.

Kevin Hoffman Releases Continuous LINQ (CLINQ) v.1.1

According to Kevin's CLINQ v1.1.0.0 Released! post of May 2, 2008, CLINQ 1.1 now includes:

  • Support for Continuous Aggregation. Now, in addition to being able to have your result sets automatically update themselves in response to changes in the source set as well as changes to items in the source set, you can have aggregate scalar values that continuously update in the same fashion. The following is a list of the supported aggregation types that can now be done continuously:
    • Average
    • Min
    • Max
    • Sum
    • Standard Deviation
    • Count
  • Brand new demo application. This demo application not only shows off the power of continuous queries and WPF data binding, but also shows you how to use continuous aggregates, create your own continuous aggregates, and how to databind a WPF GUI to a continuous aggregate value.
His post has a screen shot of the Stock Monitor demo application in action.

Added: 5/2/2008 10:30 PDT

Jeff Currier Wants Questions to Address in SSDS Best Practices Tech*Ed Session

Jeff says in his Speaking at TechEd post of May 1, 2008:

I'm heading down to Orlando in a couple of weeks to give a talk about best practices when it comes to SSDS.  I'm working on my talk outline and was curious if there were any topics in particular that the community wanted to hear about in the talk?

I've posted my topics in a comment.

Jeff's session is "Best Practices in Building Applications with Microsoft SQL Server Data Services," which has the following description:

This interactive session provides a hands-on roadmap for developing and managing applications that use Microsoft SQL Server Data Services (SSDS), details best coding practices, and answers questions related to using on-demand storage services for business solutions.

This appears to be the sole SSDS session at Tech*Ed 2008.

Added: 5/2/2008 10:00 PDT

Popularity of SaaS/PaaS and Web Services/SOA Gain 1% Over 2006 According to McKinsey/Sandhill Survey

This 19-page Enterprise Software Customer Survey 2008 report by consultants McKinsey & Co. and Sandhill Partners finds that:

Innovation in the software industry is on the upswing, with Software as a Service (SaaS) being a key driver. The SaaS model is becoming mainstream and this has led to the rise of a new generation of SaaS platforms (also referred to in the industry as Platform as a Service – PaaS).

The distribution of 857 responses to "Please select the most important trend impacting your business" are shown in the following table for 2006 and 2008:

Most Important Trend, Percent 2006 2008
SaaS/SaaS or PaaS Platform 30 31
Web Services/Service Oriented Architecture 24 25
Open Source 10 8
Offshoring/Globalization 15 13
Software Industry Consolidation 17 7
Others 4 16

A detailed analysis of SaaS/PaaS platforms, which include "cloud computing" starts on page 5. Page 6 concludes:

The momentum toward adoption of SaaS platforms is surprising. Nearly three-quarters of the companies surveyed prefer to adopt platforms in at least one of the three archetypes we identify here.

For platform vendors, the only falloff in interest comes at the largest enterprises, those employing more than 25,000 people. In short, nearly every company – or division of a larger enterprise – is a customer or a prospect for SaaS platforms.

Exhibits on pages 6 - 9 provide additional details on interest in various models SaaS/PaaS models.

BEA's Understanding the Cloud Computing/SaaS/PaaS markets: a Map of the Players in the Industry post of May 2, 2008 by Peter Laird and Kent Dickson has clear definitions of cloud computing, SaaS, PaaS, and Core Cloud Services, as well as a map and list of major players with links to their sites.

Added: 5/2/2008 11:30 PST

SSDS Finally Provisioning Private Beta Users at a Faster Pace

KellyAlt says in Onboarding early beta customers of May 2, 2008:

Over the past 4 weeks, we have been onboarding customers slowly.  Since the response to our restricted beta invitation was quite overwhelming, quite a few of you will experience some delays in getting an account.  The SSDS team is doing everything possible to get you onboarded as soon as possible.  I am happy to say that I am seeing the pace pick up a bit over the last week.

I've been working with SSDS for about three weeks and have written a WinForm test harness to give SSDS v1 a thorough workout. Here's the UI when using the REST protocol to upload a Northwind Employee entity with a base64Binary-encoded bitmap:

Watch for my "Test-Drive SQL Server Data Services" feature article coming in the July 2008 issue of Visual Studio Magazine, which will include complete C# source code for the test harness.

Added: 5/2/2008 08:30 PDT

Ryan Dunn Interviews Tudor Toma and Soumitra Sangupta About the Business Value of SSDS

In Channel9's Tudor Toma and Soumitra Sengupta: SQL Server Data Services Business Value segment of May 1, 2008 (28:19):

Ryan sits down and talks with the Group Program Manager Tudor Toma and Architect Soumitra Sengupta about the business value of SSDS.

Added: 5/1/2008 17:00 PDT

David DeWinter Adapts T4 Templates to Generate T-SQL Stored Procedure Scripts for Entity Data Models

The Text Template Transformation Toolkit (commonly called T4) is a free Microsoft code generation engine for VS 2005 and later that supports their Domain Specific Languages and Software Factories toolkits. The Hilton Giesenow and Oleg Sych blogs have posts about T4.

David's Entity Framework Stored Procedure Generation post of April 26, 2008 describes the template:

The T4 template we created is designed to be a general purpose way to generate CUD procedures for an Entity Framework model. ...

The template not only generates EF-compliant sprocs, but it also considers only the tables that are in the SSDL of the model file. Unfortunately, the template must query the database (SQL Server 2005 only!) in order to make all the decisions necessary to create the output file. However, this is usually quite fast on generations other than the first one.

The template would have been a big time saver when I wrote 40+ stored procedures for my forthcoming book's test project.

Added: 5/1/2008 13:40 PDT

Rick Strahl Posts LINQ to SQL and WCF JSON/REST Samples from His ASP.NET Connections Presentations

Rick's ASP.NET Connections Slides and Samples Posted item of May 1, 2008 provides links to sample code and PowerPoint slides from his three presentations at the ASP.NET Connections conference in Orlando. Following are Rick's abstracts of the sessions:

Building a LINQ to SQL Business Layer for ASP.NET Applications

LINQ to SQL - although completely object based, is still little more than a sophisticated data access layer and so a business object layer is still needed to abstract business logic and provide common functionality that every business related entity requires. The business layer provides a few high level abstractions to the CRUD layer as well as a host of low level features that allow better control for low level data access in case LINQ to SQL queries are ill suited for queries and operations that cannot be performed with LINQ to SQL at all.

This session and its sample code is the culmination of Rick's extensive writing about LINQ to SQL in enterprise-grade projects.

WCF 3.5 JSON and REST Services

WCF 3.5's AJAX support has been made nearly as easy and comprehensive as ASMX functionality and there are many options of how data can be accessed over HTTP now with official protocol support for the webHttpBinding. This session starts of with examples of pure REST URLS and demonstrates features like URL templating, different response formats (wrapped, bare, XML, JSON) as well as the various different options for serving in this fashion. There are also examples of serving up raw data such as images or HTML content out of the REST based API. The remainder of the session focuses on AJAX functionality and explores different ways that WCF services can be called.

If you're interested in ADO.NET Data Objects, which support WCF JSON and REST protocols, don't miss this session.

Ajax Alternatives: Using jQuery with ASP.NET

Off-topic for this blog, but very interesting if you're into AJAX.

Note: Slides are the last file in the ZIP containers.

Frans Bouma Adds LINQ to SQL Refactoring and ASP.NET Dynamic Data Support to LLBLGen Pro

LLBLGen Pro has its own native LINQ implementation, but Frans announces in his Linq to Sql support added to LLBLGen Pro post of May 1, 2008 that latest version (2.6 beta) of LLBLGen Pro includes templates for generating LINQ to SQL classes and mapping (*.dbml) files.

This means you can use LLBLGen Pro's code generator to update your LINQ to SQL data model from SQL Server metadata automatically. Microsoft's LINQ to SQL implementation requires manually updating the data model for schema changes. (ADO.NET Entity Framework's Model Browser has an Update Model from Database context menu command.)

Frans says, "The only downside is that you can't update your model in the Linq to Sql designer anymore. But, why would you?"

LLBLGen Pro ASP.NET Dynamic Data Support

Frans' Dynamic Data and 3rd party o/r mappers is a fact post of May 1, 2008 describes how he convinced Scott Guthrie to open ASP.NET Dynamic Data products to third-party object/relational mapping (O/RM) tools, which in turn enables substituting LLBLGen Pro for LINQ to SQL or Entity Framework.

Steele Price Finds LINQ to SQL Frustrating

In his Some of my frustrations with Linq to Sql post of May 1, 2008, Steel Price complains about:

  • Duplication of the "one" object of a many:one association (such as a Customer for a new Order) with the InsertOnSubmit() method if the entity has both an ID field and association.
  • Lack of a method of assuring that deletions precede insertions with multiple updates to the DataContext.
  • Loading an Association does not automatically set the ID if that field is also in the map.

These are legitimate issues that the LINQ to SQL team should fix in VS 2008 SP1.

LINQ to SQLite Accepted as a Google Summer of Code Project

Kevin Kubasik, who wrote a fledgling LINQ to SQLite provider, reports in his Mono GSOC Projects: Linq to SQLite post of May 1, 2008 that he "noticed that one of the accepted proposals for the Mono project is to create a LINQ provider for SQLite."

This project appears to be related to the "Linq to SQL for open source databases" topic of Mono's Student Projects page and is listed in Current Projects on Google Code's Mono Project page.

An Open Source Project for a SQLMetal.exe and SQL Server Compact Edition 3.5 UI

LINQ to SQL's graphic designer doesn't support SQL Server Compact Edition (SSCE) 3.5, so you must use the SQLMetal.exe command-line tool to create LINQ to SQL classes for *.sdf database files.

J. Torres has started a open source project on CodePlex to create a front end for SQLMetal.exe that's compatible with SSCE 3.5.

However, it's a good bet that SSCE 3.5 support will be included in VS 2008 SP1, so the project might have a short shelf life.

Derek Whittaker Explains How to Group LINQ to SQL Sequences on Multiple Columns

Derek explains in his Multi-Column Grouping with Linq2Sql post of April 30, 2008 how to write the LINQ to SQL equivalent of the following T-SQL query.

SELECT  COUNT(*) AS Count,   
        cs.SendID,   
        cs.Name AS SendName,   
        cts.ListID,   
        cts.ListName,   
        ctom.EmailAddress   
FROM    CampaignTrackingOpenedMail AS ctom   
        INNER JOIN CampaignTrackingSummary AS cts    
            ON ctom.CampaignTrackingSummaryID = cts.[ID]   
        INNER JOIN CampaignSend AS cs    
            ON cts.SendID = cs.SendID   
GROUP BY cs.SendID,   
        cs.Name,   
        cts.ListID,   
        cts.ListName,   
        ctom.EmailAddress  

The translation isn't obvious.

Alex James Starts a Fantasy Football Project with Entity Framework as the Data Source

Back in late March, Alex published his Statement of Intent:

I'm going to start creating 'real world' applications using the Entity Framework, and I'm going to blog about all the tradeoffs I make, the hoops I have to jump through, the gotcha's I encounter, the workarounds, the design considerations etc.

In Real world App - Part 1 - Choosing an Application of April 30, 2008, Alex decides on Fantasy Soccer (a.k.a. Fantasy Football).

In Fantasy Soccer - Part 2 - an overview of the rules of May 1, 2008, Alex says:

At this stage only one thing is certain, it will use the Entity Framework for data access.

Fantasy Soccer - part 3 - Unit of Measure of May 3, 2008 discusses using the Entity Data Model's ComplexProperty feature to handle issues with English versus metric measurements and using a helper class to enable sorting by a scaled value, such as weight in lbs. or kg. (Stones for en-uk?>

Updated: May 3, 2008