Sunday, June 6, 2010

MOSS 2007 DAL alpha

assembla repository

Please email me for me to add you into assembla team to check out the source codes using SVN. Set up guide is on the website.

Pre-release functionalities:
  • AJAX-enabled demo site (Autocompleter/update panel) Ajaxcontroltoolkit.dll
  • Using Lists as primary data store
  • using SmartPart for UI(visual web part in 2010) (found @ codeplex)
  • Model, View, Controller, AJAX (WS), Framework projects (for a robust & scalable application)
  • SPGridView (filtering/sorting/paging)
  • SPGridView with MenuTemplateItem & SPToolBar (for the nice looking MOSS style menu that allow custom events)
  • WebConfig extractor (supporting lazy-loading)
  • Predicate builder (for using Lambda expressions as where clause)
  • LinQ to sharepoint (SPMetal) credits to Bart Desmet for his excellent contributions
  • LinQ/IList extensions: for converting to DataTable for ObjectDataSource (for spgridview filtration) //optional
Can't think of more stuff, it's still in its infancy. Don't worry too much if MOSS 2010 is coming and think that the efforts here are going to be wasted as MOSS 2007 still have it's market share and most stuff in the DAL are interoperable with MOSS 2010.

It's unable to perform joining like SQL, but even MOSS 2010 Microsoft.Sharepoint.Linq doesn't as CAML doesn't support joining. You will have to do a joining at the controller level.

For e.g.

3 Lists:

Products, Products category, products in category

IList<Product> products = SPListEngine.GetIListByClause<Product>(obj => obj.Name.Contains("Demo"));
IList<ProductCategory> productCategories = SPListEngine.GetIListByClause<ProductCategory>(obj => obj.Id.Equals(5);

Perform a LinQ join like:

var joinedProducts = from p in products join pc in productCategories on products.Id == productCategories.ProductId;

foreach(var joined in joinedProducts)
{
     //do what you need in joined IEnumerable<T>
}

I am really hoping someone can help me develop an internal logic class that will remove the 2000 listitem limit. I've conceptualised it, but can't squeeze time out to do it (work & school is taking its toll on me)

Do give it a try in your next MOSS 2007 project or for your own practice.

No comments:

Post a Comment