The constructors of QueryProviderBase, DefaultQueryProvider, and QueryableBase have changed

Description

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) { }

Status

Assignee

Fabian Schmied

Reporter

Labels

None

Time tracking

0m

Components

Fix versions

Priority

Normal