We're updating the issue view to help you get more done. 

The constructors of QueryProviderBase, DefaultQueryProvider, and QueryableBase have changed


QueryProviderBase, DefaultQueryProvider, and QueryableBase<T> now require an instance of IQueryParser to be passed into their constructors. This has been caused by refactorings made in the course of the addition of new features, and it is easily remedied.

To create a default query parser:

1 var queryParser = QueryParser.CreateDefault();

To create a customized query parser:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // include default nodes var nodeTypeRegistry = MethodCallExpressionNodeTypeRegistry.CreateDefault(); [customize node parsers here] // include default transformations var transformerRegistry = ExpressionTransformerRegistry.CreateDefault(); [customize transformers here] // use default pipeline var processingSteps = ExpressionTreeParser.CreateDefaultProcessingSteps (transformerRegistry); [customize pipeline steps here] // create an ordinary QueryParser that uses the objects defined so far var expressionTreeParser = new ExpressionTreeParser (nodeTypeRegistry, processingSteps); var queryParser = new QueryParser (expressionTreeParser);

(Note that QueryParser does not change state between different queries, so it can be stored and reused with "singleton" semantics. It is of course possible to use a dependency injection container rather than manually composing the parser.)

Constructor taking IQueryExecutor was changed to also require IQueryParser.

1 2 3 4 DerivedQueryProvider (IQueryExecutor executor) : base (QueryParser.CreateDefault(), executor) { }



Fabian Schmied




Time tracking



Fix versions