The Product installer is where our official product features reside. This includes our core .NET and Silverlight assemblies such as the LinqToEntitiesDomainService and the Silverlight DomainDataSource control. The Toolkit is where we’ve put features that we want to distribute but that don’t (yet?) make the cut for being part of the official product. This is where you’ll find our experimental T4 Code Generation feature, the Windows Azure Table Storage integration, the LinqToSqlDomainService, and the ASP.NET DomainDataSource control.

We have a lot more agility within the Toolkit and we’ve always said internally that we could put out Toolkit releases more frequently than the Product, but until now we’ve never actually put out a Toolkit release that didn’t have a corresponding Product release. For the December 2nd Silverlight Firestarter event, we broke that trend and published a new Toolkit release alone. This Toolkit release is still built on top of the WCF RIA Services V1.0 SP1 Beta Product release from October. If you aren’t yet using the SP1 Beta release, you can read more about it in my post that was published during PDC 10.

Here is an overview of what changed between the October 2010 Toolkit and the December 2010 Toolkit.

Lightning Fast Installer

We are using a VS Extension package to install the templates now, which allows us to skip the dreaded devenv /setup step at the end of the installer.

T4 Code Generator Bug Fixes

With the introduction of our T4 Code Generator, there were some bugs that people were hitting that prevented their generated code from compiling. Since the initial release, we’ve since fixed a ton of bugs in the feature and done a lot more testing. While the feature is still experimental, we’re really seeking feedback on the approach we took for the T4 templates. Be sure to check out Varun Puranik’s blog for more information. Our forums are a great place to open up discussions on the T4 feature.

MVVM-Friendly DomainDataSource: DomainCollectionView

Yes, that’s right… we now have a component that is a big step toward addressing the request for an MVVM-Friendly DomainDataSource. As of this posting, that feature was the #2 requested item on the RIA Services wish list, and we’ve been pondering its design for a long time. Kyle McClellan has delivered on this and he is posting details to his blog. This feature is completely separate from the DomainDataSource, and it’s built from the ground up with ViewModel usage in mind.

Windows Azure Table Storage DomainService Update

Just a few days ago, the Windows Azure team released Windows Azure SDK Version 1.3. This release bumped up the assembly version for one of the assemblies that we reference, which caused our Windows Azure Table Storage TableDomainService to stop working. If you are using the Azure TableDomainService and you upgrade your Azure SDK to 1.3, you’ll start to get build warnings like this:

The following exception occurred creating the MEF composition container: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information. The default code generator will be used.

We have rebuilt our Azure TableDomainService against the 1.3 SDK to address this issue. This means that if you install the WCF RIA Services December 2010 Toolkit release and you’re using the Azure TableDomainService, you must upgrade to the new Azure SDK release too.

We’ve also fixed some bugs and made other enhancements to the Azure TableDomainService.

Note: The new Windows Azure Management Portal is built using RIA Services!!

Thanks for the update, this will simplify the MVVM/RIA combination a lot.

Personally, I've been very fond of using PagedCollectionView in my ViewModel, even with some of the obvious limitations now removed (e.g. lack of DataForm Add/Remove, and general Drag-drop support...).

One of the most useful features of the PCV, in order to keep a clean code for more complex contexts, was the PagedCollectionView.Filter property.

Using the .Filter option, it's very easy to re-apply complex local filters/predicates by using a simple PCV.Refresh operation.