The release is focused on further simflication, easy item access by self delarative fluent interface, ability to include customized format provider for buiding literals and more.Key Features
1. Simplified Two level (TreeNode and BucketItem) Expression tree for processing simple to complex where clause
2. Fluent interface implementation of Bucket. This gives a single entry and thus simplifies the effort.
3. No more Bucket reference pass thought the Query<T> overrides as Bucket can be access by fluent Bucket.Instance.
New singnature of Query<T> overrrides methos are
Process(IModify<T> items) : void
GetItem() : T
4. Reusable format provider support for generating literals from Query<T> overrides. Out of the box, TSqlFormatProvider is provided.
string sql = Bucket.Instance.Translate(new TSqlFormatProvider);
This will generate the eqavalent TSQL select statement when used from Query<T>.Process/ Query<T>.GetItem for Linq query and update, delete and insert statement when used from UpdateItem, RemoveItem and AddItem overrides.
More info on all these features can be found detailed at the supplied document.
Updated on 28th Feb 2009 => Added containder declaration in Bucket.Instance.ExpressionTree.
Updated on 5th April 2009 =>
Added LinqExtender.xml under DevelopmentPack\Libarary for VS inteillisence, copy it to your project directory if you use LinqExtender installer.
For nested object queries like
var query = from custom in context
where custom.Data.ApplicationId == guid
&& custom.Data.Over.Data.Name1 == "Nick"
// from Query<T>.Process , Item("Data").Value will aggregate all the nested properties used in the query.
MetaDataOuter outer = (MetaDataOuter) Bucket.Instance.For.Item("Data").Value;
Use this only for simplified providers, for considering logical operators in where clause use Instance.ExpressionTree instead.
Updated on 18th April with minor patch and few refactors.