Showing posts with label Expression Trees. Show all posts
Showing posts with label Expression Trees. Show all posts

Monday, February 16, 2009

LINQ and Entity Framework Posts for 2/5/2009+

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

Entity Framework and Entity Data Model (EF/EDM)

Danny Simmons explains in his D3: Basic Architecture Decisions post of 2/15/2009 the basic goals of his forthcoming DPMud3 Data Programmability multi-user dungeon game. Danny writes:

The first goal for this exercise is to build a real application not just a collection of samples artificially glued together but at the same time to try out new EF features such as POCO, model-first, mockable-interfaces, the n-tier APIs, T4 for code generation, etc. Another key goal is to use good architectural principles and popular app building patterns which means carefully separating concerns, using Inversion of Control to facilitate mocking and test driven (or at least very carefully tested) development, to create an n-tier architecture with WCF-services and a Silverlight client, and to use a model-view-controller pattern to simplify the creation of multiple views and controllers which share a common model.

Danny’s DPMud post of 2/13/2009 recounts the history of the original multi-user dungeon game that he used as a test harness for Entity Framework v.1 and describes the start of “DPMud3: The Zombies Search for Spock,” v.3 of the game for EF v.2. Danny promises to share the source code as soon as he finishes “working out some details with legal.”

Wriju recommends using EntityClient and eSQL to improve performance in his ADO.NET Entity Framework: Using EntityClient and EntitySQL post of 2/12/2009 and shows you how to handle paging in ADO.NET Entity Framework : Paging EntitySQL of 2/13/2009.

Simon Segal tries to get Specifications, Repositories and (finally) Fetching Strategies bundled into a single approach for the Entity Framework in his The Entity Framework and a unified Lazy and Eager loading framework. post of 2/11/2009. Simon concludes:

So far the results look promising. I will have more to say on this shortly and with a bit of luck will be releasing the code which rounds out the triad of a Repository, dynamic querying capability via Specifications and Fetching Strategies for a unified approach for lazy and eager loading that does NOT require you ever explicitly call the .Includes(), Load() or IsLoaded methods and property on the EntityCollection<T>, EntityReference<T> or ObjectQuery<T> objects.

Muhammad Mosa’s Domain Driven Design & Test Driven Development\Design with Entity Framework, Part 1.a Refactoring & Unit Testing post of 2/11/2009 has the following objective:

My target is to achieve decoupling between EF and all layers above it. This include Repository classes. This might not be of a big benefit to everyone, because my repositories implementation will still dependent on IDataContext. But for me it will help to do TDD more smoothly regardless of my underlying data access layer. Beside it might allow me in future to be able to switch from EF to LINQ to SQL and just implement my IDataContext interface for LINQ to SQL.

Downloadable source code for EF is included.

Julie Lerman announces Amazon is finally listing my book as "in stock" on 2/10/2009.

Grigori Melnik’s Thoughts on Agile Software Engineering and Beyond post of 2/9/2009 asks “DAAB and Entity Framework: possible marriage?” Grigori answers:

We’ve looked at this a little bit internally and we do not see any opportunity or value in this marriage. We might be missing something here. For those, who had asked for this, could you please provide more details about how this integration would work and what values you’d derive from it?

Danny SimmonsAvoiding Query Injection Attacks with the EF post of 2/8/2009 explains how to use ObjectQuery<T>’s builder methods to add filters, sorting and projections to EF queries. The builder fully parameterizes the queries.

See Kristofer Andersson’s Tools - Part 10 - Add-ins - Multiple diagram layouts per model in the Linq-to-SQL designer post of 2/11/2009 below.

LINQ to SQL

See Nathan Duchene’s Storing Values in XML & Using Linq to XML in VB to retrieve them post in the LINQ to Objects, LINQ to XML, et al. section.

David Hayden’s LINQ To SQL Tutorials - Lazy-Loading Properties for Performance post of 2/12/2009 shows you how to take advantage of the DelayLoading property to defer loading of large binary objects, such as images, to improve performance.

See Muhammad Mosa’s Domain Driven Design & Test Driven Development\Design with Entity Framework, Part 1.a Refactoring & Unit Testing post of 2/11/2009 in the Entity Framework and Entity Data Model (EF/EDM) for possible use of his interfaces with LINQ to SQL.

Kristofer Andersson’s Tools - Part 10 - Add-ins - Multiple diagram layouts per model in the Linq-to-SQL designer post of 2/11/2009 describes a new feature for LINQ to SQL mapping with his Huagati DBML/EDMX Tools: Layout View. Layout View enables developers to “‘chunk up’ models in digestable pieces; sometimes referred to as subject areas or functional areas.” Kris notes:

All data modelling tools support this, Visio 2003EA, Erwin, ERStudio, even the ‘diagrams’ feature in SQL Enterprise Manager all allow each model to have multiple diagram layouts/views. …

Unfortunately this feature is missing in both the Linq-to-SQL diagram designer and the Entity Framework designer in Visual Studio 2008. Also unfortunate is that the people responsible for those designers in Microsoft’s data programmability group don’t seem to prioritize that ability. Microsoft’s Sanjay Nagamangalam recently wrote “While we understand your scenario, it does not look like the next version of the designer will support viewing subsets of the EDMX at the moment.” in the comments section of the EFDesign blog as a response when a user asked for the ability to view subsets of a model in the EF designer.

Huagati offers a 30-day free trial of the v.1.62 beta version for LINQ to SQL. A decision is pending on extending this feature to the Entity Framework v.1 and will be influenced by user interest demonstrated during the beta.

Shefali Kulkarni takes on Single Table Inheritance using LINQ [to SQL] on 2/11/2009 and describes mapping a single table to a class hierarchy with LINQ to SQL.

Keven Kubasik’s Using Linq to Sqlite Providers: Updated post of 2/9/2009 provides step-by-step instructions for using the EF-enabled Sqlite provider.

Matthieu Mezil writes in his EDM Designer V0.9 post of 2/9/2009 that My first EDM Designer version was a viewer. It's now a real designer. Check it out.

Matthieu Mezil shows you how to Integrate cache in the query with the IntegrateContext(context, where.Compile()) method (2/6/2009) in a LINQ to Entities query.

LINQ to Objects, LINQ to XML, et al.

Nathan Duchene’s Storing Values in XML & Using Linq to XML in VB to retrieve them post of 2/13/2009 describes a project on which he was working:

Take uploaded XML files, do some file validation against a database using LINQ to SQL, and distribute these files across our network based on the values within the XML file.  Through all this, wire in notifications if the file fails a validation test.

The VB LINQ to XML implementation described in Nate’s post shows you how he accomplished the feat.

Bart De Smet hollers Help! Drowning in Expression Trees, What Now? on 2/12/2009 when attempting complex expressions that contain user-defined functions in LINQ to Objects predicates.

Suprotim Agarwal shows you how to Group By Multiple Values in LINQ in his post of 2/12/2009.

Matthieu Mezil wants to write an extension method Sum on IEnumerable<int> and an extension method Sum on IEnumerable<decimal> and then factorize this code in his Code factorization with delegate post of 2/11/2009. Matthieu asks “how to factorize the initialization (= 0 with an int and = 0 with a decimal) and the addition?” and then shows you the code.

LinqMaster’s 7 LINQ Tricks to Simplify Your Programs post of 2/9/2009 shows you how to:

    1. Initialize an array
    2. Iterate over multiple arrays in a single loop
    3. Generate a random sequence
    4. Generate a string
    5. Convert sequences or collections
    6. Convert a value to a sequence of length 1
    7. Iterate over all subsets of a sequence

Kai Jaeger’s JSINQ - LINQ to Objects for JavaScript CodePlex project of 2/1/2009 is a JavaScript library that allows you to write SQL-like queries against arrays and DOM node lists. According to Kai:

JSINQ is a complete implementation of LINQ to Objects in JavaScript. What that means is that if you know LINQ and you know JavaScript, you know JSINQ. JSINQ is both an API-compatible implementation of System.Linq.Enumerable and a complete query-expression compiler. That's right: you can write LINQ-style queries in JavaScript. And if that isn't enough: JSINQ is also very liberally licensed, well-document, reasonably well-tested (the Enumerable-part) and currently in beta. So give it a go!

Bart de Smet takes up matrix methods in his LINQ and The Matrix – Introducing MLinq post of 10/11/2009. MLinq provides “a very simple way to perform symbolic matrix calculations based on LINQ expression trees.” For consistency, I prefer the name “LINQ to Matrices”

Fabrice Marguerie’s Converting LINQ queries from query syntax to method/operator syntax post of 2/6/2009 describes how to “convert a LINQ query expression (query syntax) to a query operator call chain (method syntax or dot notation).” The solution definitely wasn’t intuitive.

ADO.NET Data Services (Astoria)

Steve Naughton’s back with an AJAX History in a Dynamic Data Website post of 2/13/2009 that explains how to improve users’ experience when navigating history with several filters on each list page.

Rob Bagby explains working with AtomPub in Exposing ATOM feeds from your services – part II – customizing and extending the ATOM feed of 2/13/2008 and the importance of RESTful interfaces in Exposing ATOM feeds from your services of 2/12/2009. Astoria and Azure services implement RESTful interfaces.

Shawn Wildermuth’s Twin Cities Developers' Guild Code Sample of 2/13/2009 includes the source code for a data application using Silverlight and ADO.NET Data Services to show how Line of Business apps can work in Silverlight.

Beth Massi is up to part 3 of her Astoria-powered Office Business Application series in OBA Part 3 - Storing and Reading Data in Word Documents of 2/12/2009. Earlier episodes are

Steven RobbinsSelf Hosting ADO.Net Data Services (Astoria) – Part II – A Basic WCF Service Example follows up his original article with a very basic introduction to WCF services in general using Astoria as the example. Source code is available for download.

ASP.NET Dynamic Data (DD)

Jonathan Carter’s Dynamic Data: Putting A New Dress On An Old Model post of 2/12/2009 starts with this observation:

Within the .NET 3.5 SP1 release, the initial consumer of Dynamic Data (and the newly introduced data annotations) was ASP.NET WebForms. This means that if you’re developing a data-driven web application, and your weapon of choice is WebForms, then you just happen to be in luck. Work is already underway to introduce some of Dynamic Data’s behavior into ASP.NET MVC that is appropriate to its style of development, and you can expect to see additional UI frameworks taking advantage of its semantics and data annotations as well in the near future.

And then asks and answers: “How can I begin taking advantage of it within a WebForms application?”

SQL Data Services (SDS) and Cloud Computing

This topic moved on 1/3/2009 to Windows Azure and Cloud Computing Posts for MM/DD/YYYY+.

SQL Server Compact (SSCE) 3.5 and Sync Services

Liam Cavanaugh’s Customer Spotlight - Synchronization Scalability and Live Toolbar post of 2/11/2009 discusses the scalability of syncing Website Favorites across multiple PCs with the new version of the Live Toolbar and the Microsoft Sync Framework.

Liam’s Customer Spotlight – Interscape Flip for the Mobile Sales Workforce of 2/10/2009 introduces another company, Interscape, who has developed a simple to use sales tool called FLIP Client. Liam writes:

Flip was built to incorporate features like scheduling, pipeline reporting, outlook and more.  I had a chance to talk with Matt Francis, CEO of Interscape and this is what he had to say about the Sync Framework and Occasionally Connected Applications.

Mary Jo Foley’s In Apple’s footsteps: Google licenses Microsoft ActiveSync post of 2/9/2009 describes how:

Google apparently is licensing ActiveSync in order to allow tighter synchronization between Exchange and its  newly unveiled Google Sync service.

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

 

Sunday, August 31, 2008

LINQ and Entity Framework Posts for 8/25/2008+

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

Update 8/30/2008 to 9/1/2008: Additions and updates
Update 8/29/2008: Additions
Update 8/28/2008: Additions
• Update 8/27/2008: Additions
Update 8/26/2008: SSDS is back on line as of 13:30 PDT

Entity Framework (EF)

•••• Julie Lerman’s EF Business Classes in ASP.NET Apps - Don't pass that query around! post of 8/31/2008 recommends that developers using EF

Return Results, not Queries from the Business classes

by forcing iteration by invoking the ToList(), FirstOrDefault() or similar method, or looping through a foreach structure.

•••• Shawn Wildermuth dispels The Fable of the Perfect ORM on 8/30/2008. He points out that at least the following factors enter into the selection of the object-relational mapping tool:

  • Functional Requirements
  • System Requirements
  • Skill-set of the Development Team
  • Business Factors
  • Time-to-Market
  • Business Culture
  • Lifetime of Project
  • Volatility of Schema

Shawn goes on to give examples of criteria for using LINQ to SQL, NHibernate, LLBLGen Pro, or Entity Framework.

•••• Julie Lerman’s More on Foreign Keys in EF post of 8/30/2008 describes a partial class to return the scalar value of a foreign key from an EntityReference. Foreign key values are useful for specifying associations with dropdown lists. (LINQ to SQL delivers foreign key values by default.)

•••• Matthieu Mezil demonstrates in his EF and WPF post of 8/29/2008 part of the code required for a WPF master-details application that enables using a combo box to choose the master for the details window.

••• Julie Lerman finds EntityKeys are case sensitive in her 8/29/2008 post. Improperly cased keys and property names return

  • The member with identity 'NWentities' does not exist in the metadata collection.
    Parameter name: 'identity'
  • The required entry 'customerID' was not found in the provided input. This entry is required by the key fields defined on type 'NWModel.Customer'

exceptions, respectively.

••• Matthieu Mezil strikes again on the table-per-hierarchy inheritance model in TPH Is Not NULL mapped on a relationship of 8/29/2008.

MaĆ­ra Wenzel's Handling Null Database Values Using Data Source Controls tip of 8/28/2008 notes that:

This topic Handling Null Database Values Using Data Source Controls has now been updated on MSDN to fix the sample based on various customer feedback. You can still see the old version here, in case you're curious to compare both versions.

Her post provides the details on what changed.

•• Matthieu Mezil continues his investigation of strangenesses in EF’s processing of a simple query in his LINQ To Entities: stranger and stranger post of 8/28/2008.

Jacob Proffitt’s Changing Table Names in an OR/M post of 8/27/2008 explains how to change EF and LINQ to SQL table names to suit a particular naming convention in both O/RMs’ XML mapping files. Jacob finds changing table names in EF is more difficult than LINQ to SQL.

•• Tim Mallalieu partially answered my Availability of Minutes of First "Advisory Committee" Meeting? question on 8/27/2008 in the ADO.NET Entity Framework and LINQ to Entities (Pre-release) forum:

We will put something out which will be a recap of the findings.

We we still need to do the final post mortem internally and then publish.

It’s the timetable that’s missing.

ADO.NET Data Services (Astoria)

•••• Shawn Wildermuth’s My ADO.NET Data Services/Silverlight 2 Article on MSDN Magazine post of 8/31/2008 points to his “Create Data-Centric Web Applications With Silverlight 2” article for the “Data Services” section of MSDN Magazine’s September 2008 issue. Shawn says:

What is cool about this approach is that you can issue LINQ queries on the client (in Silverlight 2) that will communicate with Data Services via the REST interface and execute queries and update data on the server.  The substantial difference that you will have to get used to is the use of Asynchronous LINQ queries in Silverlight 2.  Check out the article for all the details.

Marcelo Lopez Ruiz adds his two-cents to the Astoria history book with his ADO.NET Data Services History of 8/28/2009.

Vardi posted his Data Service Viewer 1.0 WinForm source code to CodePlex on 8/27/2008. Vardi says:

ADO.NET Data Services Tool help[s] you to create the query URL and view the result.

Marcelo Lopez Ruiz points out that “DateTimeOffset and Time properties are not available as CLR types in ADO.NET Data Services” in his Gotcha with EDM types in ADO.NET Data Services post of 8/27/2008.

Marcelo Lopez Ruiz continues with the reasons to use EF as Astoria’s back end in his timed Another ADO.NET Data Service metadata tip post of August 26. (Marcelo is on a one-week vacation.)

SQL Server Data Services (SSDS)

•••• Roger Jennings recommended that SSDS and Other Windows Cloud Services Should Have Their Own Blogs on 8/30/2008, seconding Ayende Rahien’s proposal of the day before.

Niraj Nagrani, Soumitra Sengupta, and David Robinson deliver A Candid Look at SQL Server Data Services and the Business Scenarios it Addresses in an 8/28/2008 interview by Greg Hughes. The trio tackles the following topics:

  • SSDS isn’t a hosted instance of SQL Server in the cloud, it’s an Internet-based data utility powered by SQL Server
  • Target market is businesses who offer Sofware as a Service (SaaS) applications, including small and medium-sized businesses, with multi-tenancy as an important feature
  • Integration of authentication with the BizTalk Services Identity Provider will be rolled out in the “very near future.”
  • Symmetry with on-premises instances will be outside-in rather than inside-out.
  • SSDS have the capability to hand on-premises data to SQL Server Integration Services (SSIS) and pump it up to the cloud or vice-versa.
  • Microsoft Sync Services will make SSDS into a “data hub.”
  • SQL Server Reporting Services and Analysis Services will be used to deliver reports on uptime, performance and the like.
  • SSDS will grow to 5,000 nodes next year.
  • Open beta will occur shortly after PDC 2008 and SSDS will go live in the first half of 2008.
  • SSDS will be the preferred store of compliance data for large businesses.

•••• Dave Robinson says in SSDS Tech-Ed Online Video Posted of 8/29/2008 that the interview was conducted at Tech•Ed North America 2008, which was held in early June, so the “very near future” appears not so near after all.

•• Soumitra Sengupta discusses Jon Udell’s “continuum of access styles” as it applies to SSDS in his Jon Udell cURL's with SQL Server Data Services post of 8/27/2008.

I’m not sure if just REST and SOAP as wire formats for queries constitute a “continuum,” but supporting AtomPub, JSON, and POX as wire formats as promised might qualify.

Jon Udell’s The continuum of access styles in the emerging Microsoft cloud post of 8/27/2008 mentions his ability to use cURL for basic SSDS navigation with the REST query protocol. Jon concludes:

Microsoft platforms have not historically encompassed the continuum of access styles. Happily, the emerging cloud does. And while the novelty of “just coding to a URL” on a Microsoft platform will undoubtedly attract some tirekickers who otherwise wouldn’t show up, the real draw will be the ability to exercise choice along the whole continuum.

That choice, by the way, is not only relevant to developers accessing hosted, web-facing services. It will matter as much — and with the SOAP option, even more — to developers accessing on-premises services behind the corporate firewall and across corporate boundaries. Facing outward or inward, you’re most productive when you can choose the right access style for the job at hand. Between the realm of the 100% Microsoft coder and the 0% Microsoft coder, a wide and fruitful middle ground is opening up.

Ryan Dunn complements Eugenio Pace’s Concurrency in SSDS post of 8/1/2008 for the SOAP protocol with Concurrency with SSDS via REST of 8/26/2008.

•• Mike Amundsen recounts his problems during the outage in the SSDS is unavailable for all beta users? (2008-08-26 06:00 PDT) [Resolved] thread in the SQL Server Data Services (SSDS) - Getting Started forum.

Roger Jennings’ SQL Server Data Services Beta Encounters First Major Unscheduled Downtime post describes the approximately 7.5 hour unscheduled outage that occurred on August 26, 2008. From the post:

The SSDS team is to be commended for keeping testers up to date on the progress of bringing the service back up. Their response contrasted with Amazon’s failure to alert customers of their February outage, as reported in Amazon Web Services Outage: Causes And Remedies of 2/16/2008.

•• The preceding post has been updated for subsequent events and blog posts and was moved to a separate post due to its increasing length.

Gianpaolo Carraro’s Multi Tenant Data Access (MTDA) Blueprint post of August 25, 2008 announces the availability of the MDTA Blueprint on CodePlex and a Channel 9 interview with Eugenio Pace, the developer. Here’s part of the description:

The Multi Tenant Data Access (MTDA) Blueprint, part of the Software-plus-Services Blueprint program, provides guidance on writing a SQL Server based, single instance, multi-tenant data access layer similar to that used in LitwareHR sample application (SQL Server version).

You need the S+S Blueprints Manager from CodePlex to install the MTDA blueprint. (I was unable to use it with my installation of VS 2008 SP1.)

Note: This blueprint doesn’t use SSDS, as far as I can determine so far.

ASP.NET Dynamic Data (DD)

•• Matt Berseth goes hog wild with home-page menu customization in his A Dynamic Menu For Your Dynamic Data post of 8/27/2008. Matt says:

I have my tables organized into 4 categories: Sales, People, Products and Reports.  And the cool thing is that this menu is completely dynamic.  You can add, remove or reorganize the categories without touching the UI.  And depending where you are keeping your metadata you could even do this without recompiling your app.  The grouping is automatically discovered from the metadata and the menu is built solely off the it so everything 'just works'.

Besides adding the grouping information, I also tagged each of my tables with a custom description that I am displaying under the grids title.  Nothing too complicated, but still interesting.

LINQ to SQL

•••• Damien Guard’s T4 template update for LINQ to SQL in his original post of 8/29/2008 was premature. The latest version will add:

  • Inheritance support
  • VB.NET generation
  • DataContract serialization

But it won’t support stored procedures or composite primary keys.

An updated link in future issue of this post will be provided when the template is fully cooked.

Rob Conery’s Working With Linq's Expression Trees Visually post of 8/29/2008 shows you how to extract and install the Expression Tree Viewer add-in from the CSharpSamples.zip file and use it to view LINQ to SQL expression trees.

•• See Jacob Proffitt’s Changing Table Names in an OR/M post of 8/27/2008 in the “Entity Framework” section.

Simon Segal explains how POCO improves inheritance for LINQ to SQL in his lengthy post of 8/26/2008. He promises:

I will shortly be posting a framework that makes working in a POCO and DDD style much simpler. The Framework includes implemented Specification Patterns, Fetching Strategies and Extensible Repositories for your LINQ To SQL pleasure.

Jeff Atwood recommends adding the NOLOCK statement to SELECT queries to solve a mysterious deadlock problem with LINQ to SQL in his Deadlocked! post of 8/25/2008.

Jonas Stawski recommends being extra-careful when Recreating Entities with Linq To SQL in his 8/25/2008 post.

LinqMaster uncovers an arcane bug with insert triggers and provides a workaround in LINQ to SQL Database Trigger Bug – Workaround of 9/25/2008.

Rico Mariani answers questions by readers of his LINQ to SQL performance analysis series in Linq Compiled Queries Q&A of 9/25/2008.

LINQ to Objects, XML, et al.

••• Bart De Smet goes into excruciatingly detailed coverage of the use of SOS (a.k.a. “Son on Strike”) with dynamic expression trees in his lavishly illustrated To Bind or Not To Bind – Dynamic Expression Trees – Intermezzo: SOS in Visual Studio. Bart says:

In this post I want to point out that you can actually live without that visualizer and go the hard-core way using SOS, … the WinDbg extension for managed code debugging that ships with the .NET Framework (sos.dll). A little-known fact is that SOS can be loaded directly in Visual Studio through the Immediate Window.

•• Martin Hinshelwood says LINQ to XSD is “Absolutely brilliant” in his LINQ to XSD post of 8/28/2008. I’d say the LINQ to XML team would be “absolutely brilliant” if they posted a LINQ to XSD release version instead of Alpha 0.2.

• Bart De Smet’s second post of 8/27/2008, To Bind or Not To Bind – Dynamic Expression Trees – Part 2, delves into IL generation, expression compilation, and emitting code .

Bart De Smet continues his dissertation on dynamic expression trees with To Bind or Not To Bind – Dynamic Expression Trees – Part 1 of 8/27/2008 by creating a DynamicExpression abstract class with MethodCallDynamicExpression, LambdaDynamicExpression and ParameterDynamicExpression factory classes.

Jared Parsons uses a LINQ to XML-powered word-wheel application to demonstrate how to “Increase LINQ Query Performance” in his “Basic Instincts” column for MSDN Magazine’s August 2008 issue.

Ira’s LINQ Distinct, a DataTable and the IEqualityComparer<T> post of 8/26/2008 describes how to write a custom IEqualityComparer<DataRow> for LINQ to DataSet to enable the Distinct() operator to operate on entire rows instead of a single designated column.

Bart De Smet’s To Bind or Not To Bind – Dynamic Expression Trees – Part 0 post of 8/26/2008 is the start of a new series about building dynamic expression trees.

SQL Server Compact (SSCE) 3.5 and Sync Services

No SSCE/Sync Services posts to date.

Visual Studio 2008 Service Pack 1 (General)

• Mike Taulty’s Final .NET Client Profile ( 3 ) post of 8/26/2008 points to his WPF, ClickOnce and the .NET Client Profile Channel9 video of the same date with this description:

A simple demo of building a "Hello World" application with Visual Studio 2008 Service Pack 1 and then deploying it via ClickOnce to a clean Windows XP machine using the .NET Client Profile rather than the full .NET Framework.

Mike Taulty’s The .NET Client Profile post of 8/26/2008 and The .NET Client Profile ( 2 ) of 8/27/2008 cast a jaudiced eye on the process of installing .NET 3.5 SP 1 on client computers with ClickOnce. Mike says:

If you're building something like a .NET WPF client application then one of the major bugbears (for both you and for Microsoft - let's be honest here :-)) is trying to get the .NET Framework on to the client machine.

We're trying to make this easier but if you were to look at the recent .NET Framework packages you'd perhaps not be able to tell that :-)

Miscellaneous (WPF, WCF, Silverlight, etc.)

•••• Phil Haack announces ASP.NET MVC CodePlex Preview 5 Released on 8/29/2008 and says the next release will be the official beta version. The post contains links to other important MVC-related articles.

• Roger Jennings reports problems with Internet Explorer 8 Beta 2’s new Web Slices feature in Fail on First Try of Internet Explorer 8 Beta 2 Web Slices of 8/29/2008. •••• Updated

•• Roger Jennings takes Jaiku’s new Google App Engine implementation to task in Jaiku + Google App Engine = Fail of 8/28/2008. The malformed home page shown in the post, which has lost its CSS content, took over a minute to load.

•• Aaron Skonnard posted Endpoint Screencasts - Hosting WCF Services in IIS to Channel 9 on 8/28/2008:

In this short video, CSD MVP Aaron Skonnard from PluralSight guides the viewer through how to host your WCF Service in IIS. We will start with the simple WCF service that we created in the first screencast, hosting it as an ASP.NET svc file. Aaron then demonstrates adding a couple endpoints (for greater detail, see the screencast on creating WCF endpoints) and accessing the service. Once we have our WCF service hosted in ASP.NET, we add it as an application to IIS for consumption.

The IE Team posted IE 8 Beta 2 for download on 8/27/2008. I installed it to try Web Slices on LINQ and Entity Framework Posts for M/D/YYYY+. The first item in this category recounts my lack of success with implementing Web Slices.

John Papa’s Great Fiddler Tip For Localhost Testing post of 9/26/2008 describes Shawn Wildermuth’s solution to getting Fiddler 2 to recognize the Cassini Web server’s localhost:port number: Prefix the port number with a period.

WebSlice Content for Internet Explorer 8 Beta 2

OakLeaf LINQ and Entity Framework Links

Last Updated: 8/31/2008 2:20 PM PDT

  • Entity Framework Additions
  • SQL Server Data Services Additions/Updates
  • ASP.NET Dynamic Data Additions
  • LINQ to SQL Additions
  • LINQ to Objects, XML, etc. Additions
  • Miscellaneous Additions
    • ASP.NET MVC Preview 5 Released to CodePlex
    • Problems with IE8B2's Web Slices Feature

Saturday, August 02, 2008

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

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

Updated 8/3/2008: Additions and updates

Steve Naughton Demos Use of the ADO.NET Dynamic Data Futures’ AutoComplete and CascadingFilter FieldTemplates

Windows client UIs commonly apply an AutoComplete feature that fill lists with partial-matching combo box selections while you type. But this feature appears less commonly in Web forms. Steve’s Dynamic Data and Field Templates - An Advanced FieldTemplate of August 2, 2008 describes how to combine the AutoCompleteFilter.asmx, AutoCompleteStyle.css, and AutoComplete.ascx files from the ADO.NET Dynamic Data Futures Project download on CodePlex to create an AutoCompleteText_Edit FieldTemplate.

If your WebForms’ combo box lists grow to exceed your page height, you probably need to group selections by category, which requires what the ADO.NET Dynamic Data team calls a CascadingFilter. The CascadingFilter FieldTemplate also is part of the ADO.NET Dynamic Data Futures Project download from CodePlex.

Steve’s Dynamic Data and Field Templates - A Second Advanced FieldTemplate second post of August 2 shows you how to use the CascadingFilter field template to group a Product combo box by Category using the Northwind sample database and LINQ to SQL data sources.

Added: 8/3/2008

Michael Neel Uses LINQ to XML to Generate XHTML

His Using LINQ to generate HTML post of August 3, 2008 shows how to use LINQ to XML expression syntax and the XElement type to generate XHTML to populate agenda pages for the CodeStock Website.

Added: 8/3/2008

Eric White Uses LINQ to XML to Minimize Lines and Speed-Read Code

Eric’s LINQ Reduces Line Counts and Makes Code “Pop” post of August 2, 2008 demonstrates how to move from traditional imperative-style coding to a functional approach with LINQ to XML. A simple example shortens a 22-line foreach method to 12 lines of much easier-to-read method that uses chained LINQ to XML method-call syntax.

Added: 8/3/2008

Michael Neel Uses LINQ to XML to Generate HTML

His Using LINQ to generate HTML post of August 3, 2008

Dell Attempts to Purloin “Cloud Computing” Trademark

Dell Inc. isn’t short on chutzpa. The Round Rock computer maker has redefined the term “Cloud Computing” and is attempting to obtain a trademark on it for a wide range of computer-related services, none of which conform to the accepted definitions for cloud computing of which I’m aware. Wikipedia’s entry is closest to the mark for me.

For more details, see my Dell Attempts to Purloin “Cloud Computing” Trademark post of August 2, 2008.

Updated: 8/3/2008

Drag-and-Drop Master/Details Windows Forms Still Missing from Entity Framework SP1 Beta

LINQ to SQL has supported drag-and-drop generation of master/details and master/details/subdetails forms from the Data Sources window since its first appearance in an early Orcas beta release.

The version of Entity Framework (EF) v1 in the Visual Studio 2008 SP1 Beta release can drag-and-drop TextBox or DataGridView icons from the Data Sources window to the form in design mode, but the Data Source nodes don’t include EntityReferences, such as Order.Employee and Order.Shipper, or EntityCollections, such as Customer.Orders or Order.Order_Details. Neither does the current EF v1 release display foreign key values unless they’re part of a primary key, such as Order_Detail.OrderID and Order_Detail.ProductID.

Read more about the problem at Drag-and-Drop Master/Details Windows Forms Still Missing from Entity Framework SP1 Beta of August 2, 2008.

Updated: 8/3/2008

Andrew Matthews Seeks Community Help with Enhancing LINQ to RDF

Andrew’s Wanted: Volunteers for .NET semantic web framework project post of August 2, 2008 observes:

LinqToRdf* is a full-featured LINQ query provider for .NET written in C#. It provides developers with an intuitive way to make queries on semantic web databases. The project has been going for over a year and it’s starting to be noticed by semantic web early adopters and semantic web product vendors. LINQ provides a standardised query language and a platform enabling any developer to understand systems using semantic web technologies via LinqToRdf. It will help those who don’t have the time to ascend the semantic web learning curve to become productive quickly.

He’s seeking help for development, testing, and promotion, as well as several new features:

  • Reverse engineering tool
  • Tutorials and documentation
  • Supporting SQL Server
  • Porting to Mono
  • SPARQL Update (SPARQUL) support
  • Demonstrators using large scale web endpoints

Eugenio Pace Explains SQL Server Data Services’ Entity Versioning and Concurrency Conflict Management

SOAP requests to SSDS entities require a Scope with an instance of the new (in Sprint 3) VersionMatch class to manage concurrency conflicts. Eugenio’s Concurrency in SSDS post of August 1, 2008 shows you how to implement and test it.

Chad Myers Proposes Expression-Tree Query Objects for Use by Repositories

Chad concludes that the single repository model has …

the potential for business logic (also known as ‘where’ clauses) to creep into the repository which would be bad. Perhaps a better alternative would be to encapsulate the specific logic of a given query into an object. You could then have this object produce something that the repository could (blindly, decoupled) use to query on.

This approach allows you to maintain the one repository approach, yet still have encapsulated domain-specific queries. Plus, you can test your queries independently of the repository which is a huge benefit.

He then goes on to demonstrate using an expression tree to create the query object in Query Objects with the Repository Pattern (Part 1) of August 1, 2008 and enhances the objects by coupling then with AndAlso and OrElse expressions in Query Objects with the Repository Pattern (Part 2) of August 2, which provides a full query object implementation.

Comment: Ayende Rahien contends that Chad’s syntax “leaves a lot to be desired” in his Unreadable Linq post of August 2, 2008.

Mehfuz Releases LINQ to Flickr 1.4 with New Features

Mehfuz’ Athena - A LINQ to flickr API (Release 1.4) post of August 2, 2008 says:

I have updated it with the latest LINQExtender (pre release version)  containing updated Object Tracking Service (OTS) that will enable it to update photos and comments as if like LINQ to SQL.

It also adds Extras support, which enables querying with Extras enum for additional information about your photos.

Article about ADO.NET Data Services by the Flaskos in August 2008 MSDN Magazine

Elisa and Mike Flasko’s “Expose And Consume Data in A Web Services World” article appears in the August 2008 issue of MSDN Magazine. In addition to demonstrating the usual Entity Framework back-end, the article shows you how to create an Astoria service for an in-memory CLR objects.

Note: Julie Lerman wrote Write On!: Create Web Apps You Can Draw On with Silverlight 2 for this issue. Read more about it in her Drawing in Silverlight Article in MSDN Magazine of July 2, 2008.

Input Needed for Alternative Approaches to Implementing POCO in Entity Framework v2

Alex James is is seeking the answers to the following three questions for enabling Plain Old CLR Objects (POCO) in EF v2:

  1. What are the interesting scenarios for using the state management API in POCO scenarios?
  2. What API pattern is better? Having an explicit method to compute the current state based on the snapshot comparisons or having the state to be computed automatically when accessing the state?
  3. Is it better to have an Invalid state for entries or should the state manager just throw exceptions immediately every time it finds a change on a key?

His Discussion about API changes necessary for POCO post of August 1, 2008 offers a extensive discussion of the implications of alternatives for questions #2 and #3.

Favorable Competitive Side-Effects from the Entity Framework v1 Release Anticipated

Gary Short of Developer Express concludes that XPO Will Benefit from the Entity Framework (August 1, 2008) because:

[M]any companies and many individual developers too for that matter, will not contemplate looking at a new architectural paradigm until such time as it appears on the Microsoft development stack. …

With the release of Visual Studio 2008 SP1 this summer, that is all about to change, an ORM tool (albeit a flawed one) will then become a first class citizen in the Microsoft development stack. That fact will open up the world of ORM to many more people, and as those people explore that new world many will drift to XPO and other ORM tools, making 2009, in my opinion, a great year to be in the ORM space.

Mike Amundsen Posts Code and Demo for Twitter-Like SSDS Application

Mike’s Online Guestbook Demo App up and running post in the of July 31, 2008 in the SQL Server Data Services (SSDS) - Getting Started forum announces the availability of source code for his SSDS Online Guestbook application that logs 140-character messages similar to Twitter Tweets.

Mike describes his project:

This app uses a single Container (guestbook) with two Entity 'Kinds' (guest and message). Users can create an account and then post messages for everyone to see. You can also filter the message list by guest's nickname. 

I'm testing out the user account authentication pattern (a custom HTTP Basic using cookies for browsers) and the notion of running queries in a single container over multiple 'Kinds.'  I am also working on a solid list/query caching (and cache _invalidation_) pattern as SSDS does not yet support ETags/caching of lists.

He also has a live demo of the application running on his site.

Mary Jo Foley Describes SCOPE, Microsoft’s SQL-Like Answer to MapReduce for Parallel Queries Against Massive Data Sets

Mary Jo describes Microsoft Research’s Structured Computations Optimized for Parallel Execution (SCOPE) in her Microsoft’s road to the cloud is paved with parallelism post of July 31, 2008. The “SCOPE: Easy and Efficient Parallel Processing of Massive Data Sets” whitepaper is the basis of a Microsoft presentation at the Very Large Data Bases 2008 conference scheduled for August 23 – 28, 2008 in Auckland, New Zealand.

Mary Jo quotes Greg Linden, a former Amazon developer who founded Findory.com and now works in Microsoft’s Live Labs group:

Scope is similar to Yahoo's Pig, which is a higher level language on top of Hadoop, or Google's Sawzall, which is a higher level language on top of MapReduce. But, where Pig focuses on and advocates a more imperative programming style, Scope looks much more like SQL.

Gregg concludes his post:

Please see also my past posts on related work, including "Yahoo, Hadoop, and Pig Latin", "Sample programs in DryadLINQ", "Automatic optimization on large Hadoop clusters", and "Yahoo Pig and Google Sawzall".

The white paper notes that:

“Microsoft has developed a distributed computing platform, called Cosmos, for storing and analyzing massive data sets. Cosmos is designed to run on large clusters consisting of thousands of commodity servers. Disk storage is distributed with each server having one or more direct-attached disks.”

Mary Jo mentioned Cosmos in her Windows Live Platform Services: A guide for the perplexed post of March 6, 2008.

I don’t believe that SCOPE or Cosmos have a direct relationship to SQL Server Data Services (SSDS) today. However, one of the reasons that SSDS initial design is schemaless, implements flexible entities, and has little resemblance to traditional relational database management systems (RDBMSs) might be compatibility with a future SSDS upgrade or different version that runs under SCOPE and uses the Cosmos file system.

Comment: Ayende Rahien has a lot to say on the topic in his Thinking about Cloud Computing post of August 2, 2008.

Bart De Smet Updates LINQ to ActiveDirectory

Bart’s LINQ to AD - Refresh Release 1.0.1 Available post of July 31, 2008 announces an update to LINQ to AD (formerly LINQ to LDAP) that adds the following features:

  • byte[]- and GUID-valued directory attributes
  • Bug fix for non-constant EndsWith, BeginsWith and Contains clauses
  • Introduction of DirectoryContext with support for nested contexts and direct update support
  • Updated samples to use the new available features

Mike Taulty on Calling ASMX Web Services from Silverlight 2 Clients

Mike’s Silverlight 2 Beta 2 - ASMX Services & XmlSerializer post of July 31, 2008 verifies that you can call ASMX services from Silverlight 2 Beta 2 when those services use the XmlSerializer instead of the DataContractSerializer.

Steve Naughton Discovers a Fifth ASP.NET Dynamic Data Custom Page Type

ASP.NET Dynamic Data maven Steve Naughton finds a fifth custom Page type and demonstrates how to code for the user’s current culture in his Dynamic Data Custom Pages Part 5: I18N? Internationalisation Custom Page post of July 31, 2008.

Rob Conery Replaces LINQ to SQL’s Traditional Lazy Loading with LazyList

Rob and Ayende Rahien come up with a new approach to Lazy Loading With The LazyList implementation of IList<T> that takes an IQueryable definition in its constructor. This July 30, 2008 post shows you how to include LINQ Let statements …

This is part of fooling Linq To Sql so it doesn't try to introspect this relationship and build some weird SQL statement. I had to create these methods and they are simply filter statements that return IQueryable<Product> (you can see these in the checked in Storefront code).

Rob concludes with the source code to implement LazyList<T>.

Ben Hoelting Questions the Future of ADO.NET DataSets After Microsoft Releases the Entity Framework

Ben stated "if you are creating new applications or just adding on features to your current app I would use LINQ or EF instead of ADO Datasets” and an earlier post and goes on to detail the reasons in his Are ADO.NET Datasets dead? post of July 30, 2008.

I don’t believe that DataSets are dead, but they’ll certainly be on life support in a year or two.

Data Platform Group Posts ADO.NET Data Services and Entity Framework Screencasts

Its “How Do I?” Videos — Data Platform Development page offers links to two recently added “How Do I” ADO.NET Data Services (Astoria) screencasts:

and the following screencasts for Entity Framework:

Sunday, June 29, 2008

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

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

Updated: 6/29/2008

Jeff Currier Explains How SQL Server Data Services Manages Optimistic Concurrency Conflicts with SOAP

Jeff notes that managing optimistic concurrency conflicts with SSDS’s REST wire protocol and HTTP ETags is much simpler than handling similar problems with the SOAP protocol. His Optimistic Concurrency with SOAP in SSDS post of June 29, 2008 explains the VersionMatch class with its MatchType enum that Sprint #3 added to the Scope struct.

He demonstrates how entityScopeVersionMatch.Version and entityScopeVersionMatch.MatchType combine to enable a conditional Get(entityScope) operation, as well as conditonal updates and deletions.

Jeff promises to disclose “the biggest feature of the sprint (and one of our most requested features of the service that we have now completed for sprint 3....) … shortly.”

Added: 6/29/2008 1730 PDT

David Hayden Gives the LightSpeed 2.0 Object/Relational Mapping Tool a Glowing Review

Dave’s review in his LightSpeed 2.0 O/R Mapper - New Visual Designer with Database Schema Round-Tripping and LINQ Support post of June 29, 2008 starts with this paragraph:

I was pretty impressed with the LightSpeed O/R Mapper when it was first released, but the new Visual Studio 2008 Integrated Design Surface in LightSpeed 2.0 makes it really easy to develop and maintain domain models from a database. Just like with LINQ To SQL, you can drag and drop your tables from the Server Explorer onto the LightSpeed Visual Designer and have LightSpeed generate a model for you under the covers.

He also notes that v2.0 also enables round-tripping schema/model updates. You can update the database schema for model changes and vice-versa. Entity Framework only supports updating the model from the database; LINQ to SQL requires rebuilding the entire model after a database change.

LightSpeed 2.0 supports SQL Server 2005, MySQL 5, PostgreSQL 8, SQLite 3 and Oracle 9 or higher databases. Mindscape offers four LightSpeed 2.0 licenses:

  • Express (limited to eight model classes) is free
  • Standard (limited to 30 classes) US$99
  • Professional (no limit) US$299
  • Enterprise (no limit, includes source code) US$499

Added: 6/29/2008

Ian Cooper Explains the Pain Inflicted by Using LINQ to SQL in n-Tier Projects

Ian’s Architecting LINQ To SQL part 9 post of June 28, 2008 carries a “LINQ To SQL with N-Tier: Why is there pain?” subtitle. He cites Jon Kreuger’s LINQ to SQL In Disconnected/N-Tier scenarios: Saving an Object post of February 10, 2008 and Rick Strahl’s LINQ to SQL and attaching Entities post of August 12, 2007 as example of the pain.

Ian notes that you can serialize EntitySet and EntityRef collections with the NetDataContractSerializer, which the Entity Framework uses but LINQ to SQL embargos, but the DataContext isn’t serializable because it “contains non-remotable resources like a Db connection.” Ian continues:

This means you cannot gain change tracking and lazy loading by simply serializing your DataContext too. This tends to throw people who come from a DataSet background who have become used to serializing the context with the data. Indeed this ability to work in a disconnected fashion is trumpeted as a feature of the DataSet. As a result, this set of users tries to use LINQ to SQL in the same way and then becomes frustrated when they can’t.

Ian proposes a message-based system to eliminate the need to serialize entities, which requires referencing the domain model across tiers:

We should share schema not type. We want to send message[s] not transfer an instance of a type.

He then shows examples of two messages for a “trivial service.” Hopefully, part 10 will continue with a sample implementation of messaging to update entities of a less trivial service.

Added: 6/28/2008

Steve Naughton Fixes a Table-Name Problem in His Database Based Permissions Project

His DynamicData: Database Based Permissions - Part 5 post of June 28, 2008, subtitled “Oops! Table Names with Spaces in them and Pluralization,” fixes a problem that arises when you add the Order Details table and moves a substantial amount of code to the Global.asax file.

The post contains links to sample code with SQL Server 2005 and 2008 tables.

Added: 6/28/2008

Charlie Calvert Returns to the LINQ Farm Series with Posts on Lambdas and Extension Methods/Scoping

Two months have gone by since Charlie’s last LINQ Farm post (LINQFarm: Understanding IEnumerable<T>, Part I, April 28, 2008). He incremented the tutorial on June 28, 2008 with these two posts:

  • LINQ Farm: Lambdas compares “two ways of creating a delegate instance, and explain[s] how they map back and forth.”
  • LINQ Farm: Extension Methods and Scoping suggests that you “always place your extension methods in unique namespace separated from the rest of your code so that you can easily include or exclude the extension methods from a program.”

As usual, there’s good advice in both episodes.

Added: 6/28/2008

Alex James Writes a Detailed Analysis of the Computed Properties Feature for Upcoming Entity Framework v2

Alex’s Computed Properties One Pager of June 27, 2008 is a detailed examination of the proposed Computed Properties feature of EF v2. This feature is intended primarily to support EDM-based reporting services.

The plan is to support computed scalar singletons, scalar collections, and, ideally, “a collection of ComplexTypes, Entities and perhaps even RowTypes.” However, Alex notes that “Random projections (i.e. RowTypes) are much more difficult.”

Added: 6/28/2008

Eugenio Pace Adds a Virtual Earth GeoRSS Property to His LitwareHR SSDS Project

In LitwareHR and GeoRSS of June 27, 2008, Eugenio describes a new library that enables his LitwareHR SQL Server Data Services (SSDS) project to geo-enable open jobs with coordinates from the Virtual Earth.

After providing the RSS feed to include the geotags and adding the JobsMap page, and modifing the AddPosition page to include coordinates, Eugenio concludes:

There’s still some work to be done on the layout and general UI, but the basics are there. I’m planning to upload the whole LitwareHR solution to CodePlex TFS soon and all these additions will go with that, so stay tuned.

Added: 6/28/2008

Suggestions for Scott Hanselman’s Updated Northwind Sample Database

Scott’s not a fan of Northwind, but when he suggested a new replacement for Northwind in his Community Call to Action: NOT Northwind post of May 29, 2008, many developers pushed back in the 82 comments to his post.

His NotNorthwind - Update #1 - All Your Northwind Are Belong To Us post chronicles the “steering committee” decision:

We had a SkypeCast call today at noon and it was agreed that Northwind does have some redeeming qualities. It's simple, it works, it's understood and there's a pile of demos written against it. We rethought the requirements.

As a small group, we've decided to extend Northwind. We'll still call it NotNorthwind (although Super Northwind 2000 and "Microsoft Visual Northwind Enabler SP2 RC0 Beta1 July Refresh Plus Pack" were also possibilities), though, but we want to add a bunch of features that should make it a more interesting database for demos/prototyping/experimenting.

My Suggestions for Scott Hanselman’s Updated Northwind Sample Database post of June 27, 2008 lists 11 additions that I’d like to see a new “Southwind” sample database implement.

Added: 6/27/2008 1245 PDT; Fixed missing paragraphs: 6/27/2008 0730 PDT

Jimmie Bogard Refactors a Layered LINQ to SQL Project to Achieve Separation of Concerns, Testability, and Dependency Inversion

There are few concrete examples of how to achieve true separation of concerns with an LINQ to SQL (or Entity Framework) project. The first three episodes of Jimmie’s journey through a refactoring exercise on a sample application from a recent edition of ASP.NET PRO magazine appear to fill that void:

Part 3 extracts a dependency on the static DataContext to facilitate testing and implements the Repository pattern for the Customers entity set The promised Part 4 will implement dependency inversion and unit tests.

Note: Jimmie didn’t identify the article, but it looks to me that it’s Bilal Haidar’s “LINQed and Layered” piece from the June 2008 issues, which you can read from the PDF version here.

Added: June 27, 2008 1245 PDT

“Connect Enterprise Apps With Hosted BizTalk Services” Article by Aaron Skonnard and Jon Flanders on MSDN

Aaron’s My latest article on BizTalk Services post links to MSDN Magazine’s June 2008 issue and his article about BizTalk Services. He observes in the “BizTalk Services SDK” section:

The BizTalk Services SDK is a free download available from biztalk.net that will enable you to get started programming against ISB. Before you can get started, you'll need to install the BizTalk Services SDK and create a user account on the BizTalk Services site. BizTalk Services is built on Windows Communication Foundation (WCF). The SDK is just a set of assemblies built on the Microsoft .NET Framework 3.0 that allows you to use ISB via the WCF programming model.

The Internet Service Bus (ISB) is a Microsoft hosted service, similar in concept to SQL Server Data Services (SSDS). How SSDS, ADO.NET Data Services (Astoria), or both might integrate with ISB in the future is a question I’ll be exploring during the next couple of months.

Added: June 27, 2008 1245 PDT

Mike Kaufman Continues his EDM Tools Series with Model Validation and Generating Views

Mike’s EDM Tools | Options (Part 3 of 4) post of June 26, 2008 covers “Model Validation” and “Generating Views” topic. The final topic will be combining the code from the preceding posts into the EdmGen2.exe command-line tool.

Added: June 27, 2008 1245 PDT

SQL Server Data Services Needs an Open Development Process Similar to that for ADO.NET Data Services and Entity Framework

Soumitra Sengupta’s Philosophy behind the design of SSDS and some personal thoughts post of June 27, 2008 explains SSDS’s total lack of relational features (or some might say “baggage”) in its present incarnation. Soumitra says:

Since we made an early decision to limit the number of hard problems we needed to solve, we decided that we would focus less on the features of the service but more on the quality of the service and the cost of standing up and running the service.  The less the service does we argued, the easier it would be for us to achieve our objectives. [Emphasis added.]

My SQL Server Data Services Needs an Open Development Process Similar to that for ADO.NET Data Services and Entity Framework post of June 27, 2008 suggests that the SSDS team take a different approach.

Added: June 27, 2008 1245 PDT

Ryan Dunn Continues His SQL Server Data Services and Objects Series: Part 2

In Working with Objects in SSDS Part 2 of June 26, 2008, Ryan continues from Working with Objects in SSDS Part 1 and Serializing Objects in SSDS to accommodate relationships between entities because SSDS doesn’t support associations (yet). He creates “flexible” entities with a Dictionary<string, object> property called PropertyBucket to accommodate the added associations.

Hopefully, the SSDS team will add support for associations in one of their future “sprints.” (The sooner the better.)

Added: 6/26/2007 1700 PDT

David Robinson Wants You as an SSDS Beta User

Dave’s Still waiting for your golden ticket? post of June 26, 2008 says:

[W]e are ratcheting up the speed at which we add people. We are adding hundreds and hundreds each day. If you want to start testing the most powerful, cloud based, data and query processing service now is the time to sign up. In a couple short weeks we will be rolling out our Sprint 3 bits and there is a great deal of functionality coming.

I hate to flog a dead horse, but I’m still not seeing much SSDS-related activity in the SQL Server Data Services - Getting Started forum. However, there are plenty of off-topic posts about SQL Server 2005+.

Note: My cover story about SSDS for Visual Studio Magazine’s July 2008 issue will be on-line in less than a week. It includes sample code for uploading, querying and updating the original Northwind database to a single container or container per table model.

Added: 6/26/2008 1330 PDT

Ian Cooper Rings in with a Level-Headed Critique of Entity Framework v1

Ian Cooper was one of LINQ to SQL early proponents and Entity Framework detractors. This post points to his The criticism of the Entity Framework is not just around Domain Driven Design post of June 26, 2008 and includes links to his earlier posts about LINQ to SQL and EF. There’s also a link to my early recommendations to the ADO.NET team for EF.

Get the the link with the complete backstory and links to Ian’s LINQ to SQL tutorials in Ian Cooper Rings in with a Level-Headed Critique of Entity Framework v1.

Current Commentary About the “ADO.NET Entity Framework Vote of No Confidence” Manifesto

This is list of some of the more interesting posts about Scott Bellware’s ADO .NET Entity Framework Vote of No Confidence petition moved to a separate post of the same name on June 26, 2008 at 1600 PDT because of its length.

Marcin Dobosz Lists New Features in the “Dynamic Data Features” June 25, 2008 Update

Wonder what “Dynamic Data Features” is? It’s the new alias for “Dynamic Data Extensions,” a name that lasted just 10 days. Read all about its features updated since last week in Marcin’s Dynamic Data Features 6/25 update posted post of June 25, 2008.

Don’t be put off by the 6/17/2008 date on CodePlex’s main ASPNET page. The 6/25/2008 update appears here.

Mike Taulty Posts Code to Automatically Set Timestamp Fields in Entity Framework to Concurrency=Fixed

Mike notes in his Entity Framework - Timestamps and Concurrency post of June 26, 2008: If your SQL Server tables have timestamp fields, they’re undoubtedly present to participate in concurrency conflict management, so the EF runtime should have set their Concurrency property value to Fixed.

It doesn’t, so Mike provides code to handle the task automatically.

Mike Amundsen Posts Sample SQL Server Data Services Proxy Server and AJAX Web Client Apps

You can download the two-part project from Mike’s Web site. Mike says:

I think this pattern (SSDS web proxy + clients) is going to be a pretty common model. It has the advantage of not requiring all clients to know the credentials for the SSDS repository. However, it has the disadvantage of using a proxy through which all requests are made (kinda kills the scalability a bit, eh?).

Details are in his Posted An Example for comments thread in the SQL Server Data Services (SSDS) - Getting Started forum.

Justin Etheredge Continues His LINQ Expression Trees Series: Part 2

Justin’s Dissecting Linq Expression Trees - Part 2 post of June 24, 2008 provides the best illustrated explanation of the Visitor pattern for LINQ expression trees that I’ve seen so far.

Liam Cavanaugh Explains How to Take Advantage of SQL Server 2008’s Change Tracking Feature

Liam’s Using SQL Server 2008 Integrated Change Tracking to Optimize Data Synchronization post of June 25, 2008 shows Katmai’s Configure Data Synchronization dialog that “enables SQL Server to track data changes to your database rather than relying on you to create a change tracking technique.”

Liam notes that:

DBA's are less th[a]n enthusiastic when you tell them that in order to track changes, they will need to add triggers to each of the tables.

However, management usually is less than enthusiastic about paying upgrade bills. (SQL Server 2008 Express has change tracking, but not change data capture.)

Shawn Wildermuth Recommends Silverlight for Line of Business Applications Outside the Firewall but XBAP for Intranets

Shawn’s Silverlight and Line of Business Applications post of June 25, 2008 points to his geekSpeak Webcase on the topic but includes a length explanation of his position, including:

For my money, the real benefit in Silverlight is for applications that cross the firewall. This means Line of Business applicaitons are really for B2B and B2C solutions. Unfortunately, what I hear from the community is that people see Silverlight as a solution for porting their desktop and traditional 3-tier applications to the web. Is this a good idea? I don't think so. The problem is that desktop development usually involves business objects that tend to have a direct connection to the database. Moving these sorts of applicaitons to the web means that you need to create an extra layer of communications and serialization. There is a cost both in development and performance for these extra layers.

Three of My Cover Stories are Among the Top 10 Most Popular in Visual Studio Magazine This Year (So Far)

From the Self-Promotion and Swelled-Head Department: The Redmond Media Group’s .NET Insight newsletters for June 19 and June 26, 2008 listed my following cover articles for VSM among the top 10 most popular of all articles this year (to date):

2) Model Domain Objects with the Entity Framework (March 2008)

Microsoft's ADO.NET Team readies Entity Framework and Tools 1.0 for release as a VS 2008 add-in with enterprise-level features that LINQ to SQL doesn't offer -- domain object modeling, flexible inheritance techniques, multiple database vendors, and do-it-yourself n-tier deployment.

"Do-it yourself n-tier deployment" refers to Daniel Simmons' Entity Bag (Perseus) project, which is covered by a sidebar.

3) Visual Studio 2008 Kicks Off (January 2008)

Find out how VS 2008's greatly expanded feature set and new .NET Fx 3.5 namespaces can boost your career as a professional developer and add to your programming enjoyment.

Additional VS 2008 articles in the January 2008 issue:

7) Manipulate Data in the Cloud with ADO.NET (May 2008)

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.