Monday, January 12, 2009

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

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

••• Update: 1/11/2009 6:00 PM PST: Minor additions
•• Update: 1/9/2009 5:30 PM PST: Minor additions
• Update: 1/8/2009 4:30 PM PST: Minor additions

Entity Framework and Entity Data Model (EF/EDM)

Gil Fink’s My Current Learning List of Technologies post of 1/11/2009 lists:

  • NHibernate
  • ASP.NET MVC Framework
  • Microsoft Sync Framework

as the .NET Technologies he’ll be studying and about. You can expect his Gil Fink on .NET blog posts to center on them in the early months of 2009.

Alex JamesVirtuoso – Entity Framework compatible ADO.NET provider post of 1/11/2009 reports that Kingsley Idehen’s Virtuoso database framework now supports the ADO.NET Entity Framework. His SaveChanges(false) post of the same date explains how the true and false arguments effect implicit and explicit trasactions when you invoke the SaveChanges() method on an ObjectContext.

David Ebbo’s A helper to easily set up change notifications in Entity Framework post of 1/9/2009 shows you how to write a helper method to simplify dealing with EF change notifications.

Alex James of the EF Design team discusses Model Defined Functions in EF v2 in this 1/7/2009 post and seeks comments about its usefulness and implementation from EF users. Alex also discovered LINQ… the board game and would like to know “is it a good game?”

Danny Simmon reports repairs to last December’s revisions in his Updated EF FAQ posted post of 1/8/2009. Danny says:

I made a round of updates to the EF FAQ a while back but then had some trouble with the blog software (it doesn't really like the huge word doc chunks I cut and paste into it) and didn't get around to fixing things.  This morning I gave it another go and things worked.  So we finally have a few updates.  You can take a look at: http://blogs.msdn.com/dsimmons/pages/entity-framework-faq.aspx

Simon Segal’s Fetching Strategies for the Entity Framework - a waste of time for now? post of 1/7/2009 questions “whether it’s worth implementing a half baked solution that only helps in eager fetching.” He then goes on to

Build calls to .Includes() in non generic methods implemented by a Repository, would probably be the best place to do this for Repositories implemented on top of Entity Framework V 1.0.

and concludes

My fear is that if the changes / upgrades to the Entity Framework for Version 2.0 don’t cut deep enough many will lose faith and patience and may be forced by default into using some other ORM. Personally this is a critical feature for me however for the moment I have decided there is no satisfying solution to this problem and so I am going to leave Fetching Strategies out of my library for now. I will post the entire code soon.

Matthieu Mezil reports that he’s writing his own EDM Designer in this 1/7/2009 post. He says his designer:

[M]akes two interesting points compared to the current MS designer:

  • The ability to show only some entity types and not all
  • The ability to show Complex Type

And he plans to add the following features:

  • The [cap]ability to add or remove csdl type / property / relation / inheritance (fixing these bugs of course) and to save it into an edmx file
  • The [cap]ability to change csdl type / property properties like the name, the visibility, etc.
  • The [cap]ability to show and change the mapping (including TPC which isn’t supported by current MS designer)
  • The [cap]ability to (re)generate csdl entity types from ssdl entity types. (In current MS designer, it generates it when you add the table / view from the wizard but if you delete your csdl entity type, you have to regenerate it yourself or to delete your ssdl entity type and to use the wizard to add it again. Moreover, for SSDL View, you have nothing to generate the CSDL entity type)
  • The [cap]ability to add SSDL Views or Functions
  • Integrate it in VS
  • The [cap]ability to save your designer

• Alex JamesNullable=”False”… but when exactly? post of 1/6/2009 observes that whether the Nullable=”False” condition is enforced depends on the context in which the test is made; for his example the condition is to or from persistent storage. Alex notes that the contract feature, which is coming in .NET 4.0, can extend the contexts to which the test applies compared with the present Annotations approach.

David Hayden discusses the importance of checking the number of queries issued by your chosen object/relational mapping (O/RM) tool in his Performance Profiling O/R Mapper Calls to the Database post of 1/6/2009. Dave’s post was sparked by Ayende Rahien’s release of an early beta version of NHProfiler for NHibernate, which is not free or open-source.

Julie Lerman’s EF Support for Firebird – Beta1 post points to Jiri Cincura’s Firebird ADO.NET Data Provider 2.5.0 Beta 1 for .NET 3.5/2.0 [with Entity Framework support] post of 1/6/2009, which you can download here.

LINQ to SQL

•• Stephen Wrighton waxes ecstatic from Madison Mississippi about LINQ to SQL and LINQ in general in his LINQ to SQL post of 1/7/2009. I didn’t know there was a Madison in MS.

David Hayden’s Quick Examples on LINQ To SQL Performance Tuning - Performance Profiling Your O/R Mapper post of 1/8/2009 was evoked by Simon Segal’s Fetching Strategies for the Entity Framework - a waste of time for now? post (see the “EF/EDM” section.) Dave says:

On this subject of O/R Mappers and their ability to be real chatty with your database if you are not careful, I thought I would show some quick examples with regards to LINQ To SQL and iterating against lazy loaded collection properties. For some background on why I am talking about this, see Performance Profiling O/R Mapper Calls to the Database.

Guy Barette, Microsoft Regional Director for Quebec, says in his 2009 Predictions - ASP.NET, BizTalk and LINQ 2 SQL are dead and so are VB, C# and Azure post of 1/5/2009 that these technologies are dead but then goes on to debunk his LINQ to SQL prediction with the “real story" for LINQ to SQL:

LINK 2 SQL vs Entity Framework: So Microsoft created some confusion by releasing two similar ORM technologies? Yes of course but if you look closely, they are somewhat similar and different at the same time. LINQ 2 SQL is RAD against SQL Server and the Entity Framework is the full blown ORM thing. Both use LINQ as the query language so if you invested in LINQ 2 SQL, your investment is not wasted and for God’s sake, LINQ 2 SQL is in the Framework; it cannot die!

One suggestion that I saw on the Web was to release LINQ 2 SQL on CodePlex so that people can update it since Microsoft has “abandoned” it.  First, Microsoft never said that it has abandoned it. They will keep it as it is right now and they will put all their efforts on the Entity Framework. My hope is that when we’ll see new SQL Server releases, Microsoft will update LINQ 2 SQL to match some of the new features. So back to the CodePlex idea: I think it’s a bad one because people will try to match the features of the Entity Framework or Nhibernate and that will create more confusion because we will have similar products competing against each other.

LINQ 2 SQL = simple 1 to 1 mapping against SQL Server
Entity Framework = complex mapping against SQL Server and more

2009 prediction: people will still be confused and FUD will run loose on the Web

Guy’s 2009 prognostications aren’t the last you hear for LINQ to SQL vs. the Entity Framework this year. You can read other Regional Directors’ predictions in their The Region blog.

Damien Guard’s Changing type, the state pattern and LINQ to SQL post of 1/5/2009 applies the Gang of Four’s State Pattern to emulate a runtime change of type (from OpenAccountState to ClosedAccountState) by a bank account class with an inheritance discrimator for Type and state indicator for Active.

LINQ to Objects, LINQ to XML, et al.

Eric White explains Accepting Revisions, Removing Comments, and Removing Personal Info from a SharePoint Document Library using Web Services (and LINQ to XML) in this sequel to his earlier post (below) of 1/9/2009.

Eric White discusses Modifying Open XML Documents that are in SharePoint Document Libraries using Web Services (and LINQ to XML) in this detailed 1/8/2009 post.

ADO.NET Data Services (Astoria) and REST

Steven Robbins explains in Self Hosting ADO.Net Data Services (Astoria) of 1/10/2009 how to self-host “both a “normal” WCF service, and an ADO.Net Data Services service inside the main application.” Steven continues:

The former is very straightforward and well documented, but I was a bit short of information on the latter and the information I did have hadn’t been updated for the various RTM changes.

Luckily it’s very easy to do, so I thought I’d throw together a quick example.

Rob Bagby’s Powerpoints for ‘Best of PDC’ sessions post of 1/9/2009 includes the slides from REST with WCF and the WCF REST Starter Kit, which Rob describes as follows:

This session will provide a broad overview of REST support in WCF, including some key new features available in the recently released WCF REST Starter Kit.  The session will begin with a theoretical discussion of what REST is.  It will continue by illustrating WCF support for developing LO-REST and HI-REST APIs.  This session will be largely demo driven, with specific demos demonstrating consuming LO-REST services being consumed by AJAX clients, as well as developing HI-REST services being consumed by Silverlight 2 clients.  This session is 60% demo-driven.

OakLeaf posted Azure Storage Services - StorageClient Library: Table Storage API Class Reference on 1/7/2009. Here’s the connection to Astoria:

The only “official” interface exposed by the Azure Storage Services is the REST protocol. The StorageClient sample provides “example” .NET wrapper classes for REST API operations managed by the System.Data.Services.Client library.Note: Azure Table Storage is an ADO.NET Data Services provider, as described for SQL Data Services in my SQL Data Services to Gain New ADO.NET Data Services Client Model post of 1/6/2009.

Gil Fink’s Building ADO.NET Data Services Ajax Queries Using a QueryBuilder post of 1/3/2009 describes how to use Sys.Data’s QueryBuilder object to simplify the building of queries from the client side by eliminating the need to remember the syntax to create the query. Gil’s post
provides an example of how to create a QueryBuilder with to query a
Course Uri.

ASP.NET Dynamic Data (DD)

David Ebbo offers six Tips on getting your ASP.NET Dynamic Data questions answered quickly in this 1/11/2009 post. The tips apply to questions you post to the Dynamic Data Forum only.

Rick Anderson’s brief Dynamic Data FAQ of 1/9/2009 answers these questions:

  • Q: How do I get started with Dynamic Data?
  • Q: Can Dynamic Data use a data model generated by a 3rd party O/RM tool?
  • Q: How do I hide columns from the Edit and other page templates?
  • An example of one today is LLBLGen: http://www.llblgen.com/defaultgeneric.aspx

SQL Data Services (SDS) and Cloud Computing

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

SQL Server Compact (SSCE) 3.5 and Sync Services

Gil Fink’s Getting Started with Microsoft Sync Framework post of 1/10/2009 claims that the Microsoft Sync Framework “is going to be one of the must know technologies of the near future” and provides an architectural overview of the framework.

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

Shawn Wildermuth posted See my Silverlight Data Access Talk from DevReach on 11/12/2009 so folks who didn’t make it to Bucharest can watch the the video of his Silverlight Data Access talk.

Guy Burstein’s ASP.Net MVC RSS Feed Action Result post of 1/11/2009 provides a full description of the eight different Action Results returned by the ActionResult class’s ExecuteResult() method. His example delivers a RSS Feed object.

His ASP.Net MVC Route Constraints post of 1/10/2009 is a complementary essay on the MVC Routing Engine’s mapping between URL routes and controller actions and how to apply route constraints.

Shawn Wildermuth points to availability of Microsoft’s patterns & practices (p&p) team’s Unity: an IoC Container for Silverlight on 1/9/2009, although the Unity Application Block 1.2 for Silverlight - December 2008 was released on 12/13/2008. Shawn says:

[I]n late December, the PnP team shipped their Inversion of Control (IoC) container for Silverlight called the Unity Application Block. This is a port of the Unity Application Block that has been available for .NET for some time. For more information on IoC containers (and the Dependency Injection pattern), see Martin Fowler's article here.

To compliment this, I know the team is also working on a port of their Composite WPF Application Guidance (which optionally uses the Unity Application Block) for composing large applications from smaller pieces.  This guidance is a great way to build large Silverlight or WPF applications. They are working on the Silverlight version of this and hopefully it will be released soon.

Bill McCafferty’s An argument for moving ASP.NET MVC controllers to a separate assembly assesses the benefits of preventing bidirectional dependencies between controllers and data layers in ASP.NET MVC projects.

Craig Murphy (a.k.a. The Social Programmer) posted 049 - David Yack and Jonathan Carter on ALT.NET, MVC and Community from London on 12/18/2008 but I missed it during the Holiday Madness. Here’s the deck:

In this podcast you can listen to David Yack and Jonathan Carter very eloquently discussing ALT.NET and .NET 3.5 SP1 and beyond. You may hear me using to the word “opposite” somewhat out of context, apologies for that…I was within the “safe for podcasting alcohol limit”…it just goes to show that any alcohol and podcasting can be have consequences…

Simon Segal’s Silverlight and Model View Presenter (is it a realistic option?) post of 1/6/2009 is about his Case In Point Silverlight application that “just now moved into preparing the ground for structuring my approach to the Business Logic and Data Access and how I was going to affect loosely coupled layers.”

2 comments:

Fabrice Marguerie said...

Seems to me that NHProfiler for NHibernate is free and open source. The link to it is not correct by the way. Here is the correct address: http://ayende.com/projects/nhibernate-query-analyzer.aspx

Roger Jennings (--rj) said...

@Fabrice,

Thanks for the comment.

Ayende has published a price list for various copy quantities at http://nhprof.com/Buy. It's "free and open source" under a BSD license for non-commercial use, as I read the license terms.

The address has moved again. It's now: http://www.assembla.com/wiki/show/NHibernateQueryAnalyzer

--rj