June 2007 - Posts

image Two months after the appearance of the 0.1.2 alpha release of LINQ to SharePoint, I'm proud to announce the availability of the 0.2 alpha release. If you can't wait any longer, here's the direct link to the release page.

Q: So, what's new in this release?
A: A bunch!

No seriously, v0.2 is a major milestone on behalf of the query parser. Although the to-do list is growing day after day and the spec is being extended accordinly, 0.2 provides a pretty complete querying experience with support for lots of query constructs, getting near to the (albeit limited) expressiveness of CAML.

As an example, the CamlMethods class was introduced to host the DateRangesOverlap function that couldn't be represented in regular C# 3.0-ish or VB 9.0-ish expressions.

For what the field types are concerned, lots of work has gone in the design and implementation of Lookup(Multi) field support, which is kind of a masked and burried PK-FK relationship. Although we're not anywhere near to full join capability, one can traverse a Lookup field link, even in the query:

var src = new SharePointDataSource<Customers>(uri);
var res = from c in customers where c.Profile.Age >= 24 select c;

If you know a bit of CAML it might be a good idea to do a little brainstorming on how such a nested query could be realised. There's quite some magic in it to make it work. If you think you know the answer, turn on the logging support on SharePointDataSource and you'll see the CAML query popping up:

var src = new SharePointDataSource<Customers>(uri);
src.Log = Console.Out;
var res = from c in customers where c.Profile.Age >= 24 select c;

But what about debug-time inspection of queries? As a last-minute addition (with lots of work left to be done in a broader set of IDE supporting development cycles) a debugger visualizer was added:


Pretty cool to my humble opinion :-). I have to disappoint you a bit since the Execute button isn't functional yet, but this is where we're going...

I'm a little lazy tonight, so for even more 0.2 features take a look at my previous blog post on the topic. Notice there are a few known issues (a complete list will appear in the work item list for the 0.2 release over the next couple of days) that have to do with some restrictions in CAML, e.g. when working with DateTime fields in query predicates. Don't worry however: CAML experts are investigating these in the meantime and hopefully fixes will become available in the 0.3 timeframe.

As we're finalizing the planning for 0.3, all feedback is still welcome. A few highlights for 0.3 include:

  • First pieces of entity update support;
  • Additional field types support and richer entity model;
  • Better IDE support for various tasks;
  • More test coverage and bug fixes;
  • Refactoring and code maintenance;
  • ...

The goal is to release 0.3 in August as a stepping stone to get in a beta phase this fall. Depending on the VS 2008 'Orcas' release schedule, adjustments to the schedule might occur to have a better technology alignment.

Stay tuned for more news; I intend to create a few How-To videos the next couple of weeks, covering various topics, usage scenarios and bit of "insights and internals". Furthermore, an update to the query parser and infrastructure spec will be uploaded to Source Control too.

Have fun!

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Hi folks,

It's a lovely day, especially for the LINQ to SharePoint project (www.codeplex.com/LINQtoSharePoint). The last set of features that were planned for the 0.2 release have been implemented finally and code has been checked in to the CodePlex source control. So, I'm extremely proud to announce the 0.2 alpha release is coming closer day after day. This version targets the Orcas Beta 1 release and WSS 3.0 (although it should work fine with older versions of SharePoint too, but notice these versions didn't get the desired amount of testing yet).


Key improvements have been made on the level of the query parser and the SpMetal tool. Here's a quick overview of the core features covered in 0.2:

  • Enhanced support for SharePoint list field types, including Lookup and LookupMulti fields with lazy loading support and subquery support, e.g.

    from user in users where user.IsMember select new { user.Name, user.Profile }; // user.Profile will be loaded lazily when a property is accessed
    from user in users where user.Profile.Age >= 24 select user; // a subquery will be created for the user.Profile.Age >= 24 part


  • Changes to the entity model used by LINQ to SharePoint, in preparation for update support down the road, e.g.

    class User
       [Field("First Name", FieldType.Text]
       public string FirstName
          get return (string)GetValue("FirstName"); } // GetValue is defined on the SharePointListEntity base class
          set SetValue("FirstName", value); } // SetValue is defined on the SharePointListEntity base class

  • Optimization of the CAML queries generated by the query parser, e.g.

    from e in src where 1 == 1 && e.Age >= 24 select e; // (true && e.Age >= 24) == (e.Age >= 24) - similar optimizations are in place for other boolean operators
  • Support for First and FirstOrDefault query operators, e.g.

    (from e in src select e).First(); // equals to .Take(1)
  • Introduction of a CamlMethods static class with helper functions, including DateRangeOverlaps, e.g.

    from task in tasks where CamlMethods.DateRangeOverlaps(DateTime.Now, task.DueDate) select task; // generates a <DateRangeOverlaps> CAML element



  • Support for Now and Today elements, e.g.

    from task in tasks where task.DueDate >= DateTime.Today select task; // generates a <Today> CAML element; similar treatment for DateTime.Now
  • Multiple Where clauses per query are supported, e.g.

    from user in users where user.IsMember orderby user.Age descending where user.Age >= 24 select user; // constructs an <And> combination of individual where predicates
  • SpMetal improvements and separation of front-end and back-end functionality, allowing for hosting of SpMetal functionality in other environments (such as an IDE);
  • Availability of the first draft of the technical spec;
  • First set of unit tests covering the query parser;
  • Lots of bug fixes.

I'm also happy to tell that planning for the 0.3 release has started today. 0.3 will likely be the first beta release of the project, covering overall improvements to the query parser and the addition of entity update support through SharePointDataSource<T>. More exciting features are on the wish-list and hopefully these will make their way to the first beta. Stay tuned and leave your feedback!

In the meantime, make sure to check out the project's home page at www.codeplex.com/LINQtoSharePoint. The 0.2 release bits will become available later this month but for those of you who can't wait, the most up-to-date sources are available at any time via the Source Code tab :-). The next couple of days, additional testing will be carried out to ensure stability of the 0.2 release.

Btw, other 3rd party LINQ Providers are under development too - check out the OakLeaf Systems blog at http://oakleafblog.blogspot.com/2007/03/third-party-linq-providers.html for a list of such implementations.

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Microsoft Virtual Earth is cool - it really is. But did you - fellow Belgians - know it's closer that you might have expected? I collected a few links to a number of interesting places in Belgium that I really like (because of various reasons). An overview...



The place where I studied and lived for the last couple of years. Also known by the Belgian Developer & IT Pro community for hosting the Developer & IT Pro Days this year and last year. Photos were taken on a sunny Sunday somewhere in July last year during "De Gentse Feesten" (click the links to collect evidence):

University places:



I do not come to Antwerp that often, but it's a nice place nevertheless (especially according to citizens of Antwerp). A few interesting places that pop in my mind directly:





Popular tourist places at or near to the Belgian coast:



Undoubtly (one of) the most popular places in Belgium for tourists, especially the Japanese. Since I'm sure the latter ones have a zillions of photographs already I limit myself to two links:



Where I'll stay from October on:



Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Did you know Microsoft released an addition to LINQ to XML called LINQ to XSD, allowing to write queries against typed XML trees by means of a generated object model? It's available as a preview from http://www.microsoft.com/downloads/details.aspx?familyid=E9C23715-9E71-47A7-B4DB-363C2A68FAB4&displaylang=en.

PS. This post was written using Windows Live Writer beta 2, which can be found via http://windowslivewriter.spaces.live.com.

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

A few weeks ago I mentioned Acropolis on my blog as one of the technologies that were about to be announced at TechEd US. Today the first CTP of the technology has been released on http://windowsclient.net/Acropolis/. So what's it all about?

  • Componentized application architecture based on "parts", allowing for composition of apps based on connectable building blocks
  • Nice split between presentation logic and underlying business logic à la MVC
  • Theme support for applications allowing for much richer user experiences, even in a user-based manner
  • Integration of Acropolis-based applications with Office and other hosts
  • Easy deployment, management and updating of/for applications

If you have Orcas Beta 1 on your machine already, you can take a jumpstart with Acropolis right now. Download it over here and make sure to grab the help files too. Enjoy!

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Get it now from https://connect.microsoft.com/SQLServer! Download size is only about 877.34 MB, so don't hesitate :-).

With SQL Server 2008 June CTP release, customers can immediately utilize new capabilities that support their mission-critical platform and enable pervasive insight across the enterprise. SQL Server 2008 lays the groundwork for innovative policy-based management that enables administrators to reduce their time spent on maintenance tasks. SQL Server 2008 provides enhancements in the SQL Server BI platform by enabling customers to provide up-to-date information with Change Data Capture and MERGE features, and develop highly scalable analysis services cubes with new development environments. 

For more information on Katmai, visit http://www.microsoft.com/sql/prodinfo/futureversion/default.mspx. A few highlights include:

  • Mission-Critical Platform
    • Improved data encryption, auditing, key management
    • Data page recovery enhancements, transparent failover
    • Declarative Management Framework (DMF) for policy compliance enforcement
    • Data compression support out-of-the-box
    • Resource utilization management using Resource Governor
    • Predicatable query performance by improved query plan caching
    • Streamlined installation
    • Hot Add CPU
  • Dynamic development
    • LINQ to entities and ADO.NET Object Services
    • Unified data synchronization platform with offline designers, data change tracking, etc
  • Beyond relational data
    • Support for additional kinds of non-relational data
    • FileStream data storage support with transactional integrity
    • Integrated Full-Text Search
    • Sparse columns, large user-defined types
    • Location-aware applications with spatial data and location data
  • Pervasive business insight
    • Higher data and backup compression
    • Partitioned table parallelism
    • Change Data Capture tracks changes to data
    • Various query optimizations for data warehouse scenarios
    • Enhanced SSIS scalability with persistent lookups and pipeline improvements
    • MERGE SQL statement
    • Analysis scalability enhancements with writeback and block computations
    • Scalable reporting with better scale-out, internet reporting scenarios, an improved Report Builder, Office integration, forms authentication, integration in existing apps, enhanced management


Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

More Posts