Magiq: New release and API Changes
New release of Magiq, supporting Linq-to-sql. This should be the last one for Linq-to-sql, the next one I hope will have the minimal support for Entity Framework. You can download it from here.
For those reading this for the first time (?), Magiq is a framework that let you do mass operation in a Linq fashion.
So… as Magiq will be supporting Entity Framework soon, it made sense to change the API to make it support Entity Framework limitations. Also, I found a better Insert API (the one that always made me doubt!). The changes are:
Query extension method changes
The new method looks like this:
country.Query(x => x.Cities);
It will return an IQueryable that will let you do all the Magiq stuff.
No more IEnumerable support
This is a hard one. You can only do Magiq stuff between IQueryables. If you have an IEnumerable collection, use the Query extension method of it parent entity.
New Insert API
destination.Insert( source.Where( condition ).Select( new Item{ ... } ));
Cool, isn’t it?
Entities extension methods
Because we no longer support extension methods over collections but over the entity, there are some extension methods for improving the code readavility.
Delete
entity.Delete(x => x.Collection.Where( condition )); //Instead of entity.Query(x => x.Collection).Where( condition ).Delete();
Update
entity.Update(x => x.Collection.Where( condition ).Set(x => x.Prop, value)); //Instead of entity.Query(x => x.Collection).Where( condition ).Set(x => x.Prop, value).Update();
Query
entity.Query(x => x.Collection.Where( condition )); //Instead of entity.Query(x => x.Collection).Where( condition );
Insert
entity.InsertInto( x => x.Collection, source.Where( condition ).Select( new Item{ ... } ));
//Instead of
entity.Query(x => x.Collection)
.Insert( source.Where( condition ).Select( new Item{ ... } ));
