Note: This post is updated daily or more frequently, depending on the availability of new posts.
John Papa Writes Yet Another Article on LINQ Query Operators
John's Standard Query Operators with LINQ post of April 5, 2008 points to his eponymous article for his "Data Points" column in MSDN Magazine. I thought the market for magazine articles that demo the Standard Query Operators with arrays of numbers and Northwind entities was saturated. Obviously I was wrong.
TechCrunch blogger Mark Hendrickson relies on "a source with knowledge of the launch" to report rumors about Google opening Bigtable to developers in his Source: Google To Launch BigTable As Web Service post of April 4, 2008. Mark says the announcement is scheduled for the week of April 6.
Dave Winer must have had premonitions of the possible event when he wrote a pair of prescient posts that I quote in my Rumor: Google to Compete with SimpleDB and SSDS with Bigtable as a Web Service post of April 5, 2008.
My conclusion: Bigtable's architecture and implementation have more in common with Amazon's Simple DB than either database has with SSDS:
- Bigtable and SimpleDB aren't relational database management systems (RDBMSs); both resemble multidimensional indexed maps of attribute/value pairs. SSDS attempts to hide the fact that it's an RDBMS.
- Bigtable and SimpleDB have latency, which results in eventual consistency, although it appears from Table 2 of the Bigtable technical paper that no-latency operation is an option; SSDS has no latency by design.
- Bigtable values are an "uninterpreted array of bytes" and SimpleDB stores only strings; SSDS has string, number, datetime, binary and boolean datatypes.
Randolph Cabral Compares ActiveRecord and Unit of Work Patterns with LINQ to SQL
Randolph's Active Record Vs. Unit of Work post of April 3, 2008 is an essay on the relative merits of and problems with the two design patterns. He cites cardinality issues with updates to associated entities as an Active Record problem. The additional code required to reattach detached objects with LINQ to SQL in Web applications is the major hurdle with the Unit of Work pattern.
Julie Lerman Finds Anomaly in the EDM Designer's Update Model from Database Feature
Julie describes in her EF UpdateModel and naming conflicts post of April 5, 2008 the agonies of creating entities in the EDM Designer, then adding tables for them to a persistence database, and trying to use the Update Model from Database feature to hook the model to the store. In this case, a table and association with identical names blocked the update.
Julie reports that she gave up on the process of updating a simple model from an existing database in her Model first with EDM? post a few hours later.
A message by a member of the ADO.NET team in the ADO.NET Entity Framework and LINQ to Entities (Pre-release) forum, which I no longer can find, mentioned that the team was working on a separate application to create a (presumably SQL Server-only) database from an EDM. This is good news.
However, Julie was attempting to define a CSDL file that can be used with multiple sets of SSDL and MSL files to accommodate different back end databases, so building the database from the model wouldn't appear to solve her problem.
Update 4/6/2008: Julie added the following in a comment at the end of the post: "I actually had some success with the model first tests and updated my blog post."
Emad Ibrahim Creates a LINQ to SQL Unit Test with LINQ to Mock (Moq)
Emad's Unit Test Linq to Sql in ASP.Net MVC with Moq post of April 4, 2008 shows how he:
- Modified the Moq version of the MvcMockHelpers class from Scott Hanselman and added two more methods to mock an authenticated user
- Added a couple of properties to [the] test class (MessageControllerTest) to make it easy ... to access the controller and view engine in all the test methods
- Created [a] test method which is going to call a Create method in [the] MessageController and pass it a string.
His post also include links to related resources.
Julie Lerman Posts Eight Entity Framework Tutorials on DataDeveloper.net
In addition to writing her book, Julie found time to write eight Entity Framework tutorials. Here's the list with links:
- 101 Tutorial:Creating an ADO.NET Entity Framework Entity Data Model
- 101 Tutorial: Use an Entity Framework Entity as a WinForms Data Source
- 101 Tutorial: ASP.NET DataBinding with the Entity Framework
- 101 Tutorials: WPF Databinding with Entity Framework
- Many to Many Relationships in the Entity Data Model
- Using Stored Procedures for Insert, Update & Delete in an Entity Data Model
- Naming conventions in an Entity Data Model: Cleaning up the wizard-generated EDM
- Adding items to a LINQ Query of anonymous types - after the fact
Julie says in her Eight Entity Framework Tutorials on DataDeveloper.NET post of April 4, 2008 that the "'101 Tutorials'" are designed to make sure new programmers don't get completely lost."
Jesse Liberty: Send LINQ to SQL Data via WCF to a WPF DataGrid in a Silverlight 2.0 Project
The Silverlight.net site's Displaying SQL Database Data in a DataGrid using LINQ and WCF post of April 4, 2008 is a detailed, fully illustrated tutorial for integrating LINQ to SQL, Windows Communication Foundation (WCF) asynchronous service calls, and the new Windows Presentation Foundation (WPF) DataGrid in a Silverlight 2.0 Beta 1 project.
According to the tutorial's introduction:
The application we’ll build will combine a number of different new skills:
- Connecting [asynchronously] to a WCF Web Service
- Using LINQ to query and retrieve data that our Silverlight Application can use
- Using the DataGrid control to display data
From a strictly Silverlight perspective, building the Web Service and using LINQ are related skills but beyond the scope of these tutorials. That said, we’ll examine how they intersect with Silverlight.
The tutorial is based on material contributed by the Swiss MSDN Team who've produced a 15:00 video segment on it that you can watch at Silverlight 2 Beta1 + WCF + LINQ to SQL = a powerfull combination.
Jesse offers a simpler LINQ to SQL to WPF demo (not Silverlight) in his LINQ To SQL blog post of March 26, 2008.
It should be easy to substitute Entity Framework and LINQ to Entities for LINQ to SQL.
Added: April 4, 2007
Greg Beech Maps LINQ C# Query Expressions into the Underlying LINQ to Objects Method Calls
Greg is a UK developer who's a Development Lead at blinkBox Entertainment currently focusing on the middle tier who's started a "Translating C# 3.0 query syntax for Linq-to-Objects" series. Greg observes:
I haven't found any that go into the gritty details of how the query syntax is translated into the underlying method calls. It's a gap this series aims to fill.
After an explanation of how the compiler handles the translation from query expressions to method calls, he maps the two in a small diagram near the end of each post:
Following are the first three members of the series:
I'll update this post as Greg posts additional translations.
Austrailia's Zu Shoe Web Site Uses LINQ to SQL as its Data Access Layer
- Visual Studio 2008
- ASP.NET 3.5
- LINQ to SQL
- ASP.NET AJAX
All in all this project was great to work on, being able to use .NET 3.5 and Visual Studio 2008 saved us a lot of time, and using LINQ to SQL cut down creating the DAL quite a bit. Of course with all new techs we have had challenges along the way, but still developed it a lot quicker using VS 2008 and .NET 3.5.
This is the first large commercial site that I've heard uses LINQ to SQL as its data source. Vivid Group has two more ASP.NET 3.5 sites in the works.
The site has flair; check it out!
Jeff Currier Demonstrates How to Use SQL Server Data Services' SOAP Client
Jeff's Interacting with SQL Server Data Services using SOAP post of April 2, 2008 describes SSDS's SOAP client and the generated C# code for the Scope object, which has the following four settings:
Service Scope - This the scope when a scope object instance is passed to the service without any of the properties set. This would typically be the case when the intent is to create a new authority object in the service.
Authority Scope - When just the authority id is specified on the scope object. This is generally the case when the caller is attempting to create a container, retrieve the set (or a restricted set) of containers from a given authority or finally when attempting to simply retrieve a particular authority instance.
Container Scope - As you might imagine this scope is established when both the authority and container id properties are set on the scope object. This scope is typically used when querying within a container for a set of entities (or all entities), creating new entities, or deleting a specific container.
Entity Scope - Used to narrow the focus of the operation to be performed down to the entity level. This is typically used when the caller is attempting to update, retrieve or delete a specific entity within the service.
He then goes on to provide examples of creating a new Authority, Container and Entity, populating the Entity and finally reading its content.
Following are Jeff's previous posts that cover Java and .NET REST clients:
SQL Server Data Services Meet Java (Jakarta REST client, 3/19/2008)
Some SQL Server Data Services Coding Examples (REST client, 3/17/2008)
The SSDS Team Wants Your Input on SOAP Versus REST Wire Formats
In the SSDS Team's Jeff has posted some SOAP samples post of April 3, 2008, kellyalt asks:
We are interested in finding out how many out there will build against REST and how many will build using SOAP. What are the considerations when you think about using one or the other? How can we make these interfaces better over time? These are some of the questions we have in our mind. Would love to hear from you.
My reply was 10:1 REST:SOAP because of simplicity and low overhead for public catalog data that doesn't require the WS-* security features afforded by the WSHttpBinding default.
I'd need to have the REST and SOAP client bits and admission to the beta services to answer the "How can we make these interfaces better over time?" question.
Overall, I'd say both questions are a bit premature.
Julie Lerman Explains How to Leverage ObjectQuery Options on a LINQ to Entitities Query
At design time, [a LINQ to Entitities] query is an IQueryable, not an ObjectQuery and doesn't have MergeOptions.
So you can cast the LINQ to Entities query to an ObjectQuery, set the MergeOption and, as Jeffrey Palermo would say, party on the LINQ to Entities query.
The whole story is in Julie's ObjectQuery, LINQ to Entities and IQueryable post of April 2, 2008.
Taking Advantage of Stored Procedures in the Entity Framework
The Entity Framework (EF) defaults to generating dynamic parameterized Entity SQL (eSQL) statements to populate (hydrate) entities from tables in the underlying relational data store and parameterized data manipulation language (DML) statements to create, update and delete entities and their associated tables.
Many organizations and individual DBAs prefer or insist on the use of stored procedures rather than dynamic SQL for SELECT, INSERT, UPDATE or DELETE operations. Stored procedures prevent the need to grant users direct access to tables, which could compromise database security. In many cases, the capability to efficiently execute stored procedures instead of dynamic SQL is the principal determining factor in choosing an object/relational mapping (O/RM) tool.
EF has built-in support for stored procedures but there's no central source of complete, up-to-date documentation and how-to information for using stored procedures with the current Beta 3 version and its Entity Data Model (EDM) Designer CTP 2. The EF Extensions, which add flexibility in the use of custom stored procedures and speed their execution, hasn't been widely used or thoroughly documented. (There were only 181 EF Extension downloads from the MSDN Code Gallery as of 3/31/2008, and Colin Meek only recently published his ADO.Entity Framework: Stored Procedure Customization article on 3/26/2008)
The following three articles contain detailed instructions with screen captures and code examples for creating entities, changing from dynamic SQL to stored procedures, testing EDMs with stored procedures, as well as minimizing the number of stored procedure calls and improving performance with the EF Extensions:
Testing Stored Procedure Replacements for Entity SQL Statements (March 29, 2008)
Repeated from LINQ and Entity Framework Posts for 3/31/2008+.