Synergi LINQ Provider Prototype

The last two weeks I have been working on a LINQ provider for Synergi. LINQ is a very nice and useful mechanism for extracting data from any type of data store. When creating a LINQ provider there are some hurdles to overcome. Once you get an understanding of IQueryProvider, IOrderedQueryable<T> and the ExpressionVisitor abstract class, things begin to fall into place.

The following example shows two queries. They both produce the same result, but the last one specifies the entire query using numbers, while the first one uses text representation. When using text representation the text is converted to a number before the search is performed.

SynergiQueryContext ctx = new SynergiQueryContext(ConfigurationInformation.FromAppSettings, new WebServicesParameters("extensive", "extensive",250,2));
            
var query = from c in ctx.QuerySynergi
 where c.ImportDatabaseID == 2
 && c.CaseTypeD == "Audit p%"
 && c.StatusD == "Registered"
 && c.PersonInChargeD == "%extensive%" 
 && c.UnitInChargeD == "Unit 0%" 
 orderby c.CaseNo ascending
 select c;

var query2 = from c in ctx.QuerySynergi
 where c.ImportDatabaseID == 2
 && c.CaseType == 115
 && c.Status == 1
 && c.PersonInCharge == 3
 && c.UnitInCharge == 1
 orderby c.CaseNo ascending
 select c;

Both examples produce the same result.

The LINQ provider is not finished yet. There are still a lot more search parameters to add to it, but it is a good example of a LINQ prototype for Synergi.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: