/// <summary> /// Applies preprocessing transformations to the query. /// </summary> /// <param name="query"> The query to process. </param> /// <returns> A query expression after transformations. </returns> public virtual Expression Process([NotNull] Expression query) { Check.NotNull(query, nameof(query)); query = new InvocationExpressionRemovingExpressionVisitor().Visit(query); query = NormalizeQueryableMethod(query); query = new NullCheckRemovingExpressionVisitor().Visit(query); query = new SubqueryMemberPushdownExpressionVisitor(QueryCompilationContext.Model).Visit(query); query = new NavigationExpandingExpressionVisitor(this, QueryCompilationContext, Dependencies.EvaluatableExpressionFilter) .Expand(query); query = new QueryOptimizingExpressionVisitor().Visit(query); return(query); }
public override Expression Process(Expression query) { query = new EnumerableToQueryableMethodConvertingExpressionVisitor().Visit(query); query = new QueryMetadataExtractingExpressionVisitor(_queryCompilationContext).Visit(query); query = new InvocationExpressionRemovingExpressionVisitor().Visit(query); query = new AllAnyToContainsRewritingExpressionVisitor().Visit(query); query = new GroupJoinFlatteningExpressionVisitor().Visit(query); query = new NullCheckRemovingExpressionVisitor().Visit(query); query = new EntityEqualityRewritingExpressionVisitor(_queryCompilationContext).Rewrite(query); query = new SubqueryMemberPushdownExpressionVisitor().Visit(query); query = new NavigationExpandingExpressionVisitor(_queryCompilationContext, Dependencies.EvaluatableExpressionFilter).Expand(query); query = new FunctionPreprocessingExpressionVisitor().Visit(query); new EnumerableVerifyingExpressionVisitor().Visit(query); return(query); }
public virtual Expression Process([NotNull] Expression query) { Check.NotNull(query, nameof(query)); query = new InvocationExpressionRemovingExpressionVisitor().Visit(query); query = NormalizeQueryableMethodCall(query); query = new VBToCSharpConvertingExpressionVisitor().Visit(query); query = new AllAnyToContainsRewritingExpressionVisitor().Visit(query); query = new NullCheckRemovingExpressionVisitor().Visit(query); query = new EntityEqualityRewritingExpressionVisitor(_queryCompilationContext).Rewrite(query); query = new SubqueryMemberPushdownExpressionVisitor(_queryCompilationContext.Model).Visit(query); query = new NavigationExpandingExpressionVisitor(this, _queryCompilationContext, Dependencies.EvaluatableExpressionFilter).Expand( query); query = new FunctionPreprocessingExpressionVisitor().Visit(query); return(query); }
public virtual Expression Process([NotNull] Expression query) { Check.NotNull(query, nameof(query)); query = new EnumerableToQueryableMethodConvertingExpressionVisitor().Visit(query); query = new QueryMetadataExtractingExpressionVisitor(_queryCompilationContext).Visit(query); query = new InvocationExpressionRemovingExpressionVisitor().Visit(query); query = new LanguageNormalizingExpressionVisitor().Visit(query); query = new AllAnyToContainsRewritingExpressionVisitor().Visit(query); query = new GroupJoinFlatteningExpressionVisitor().Visit(query); query = new NullCheckRemovingExpressionVisitor().Visit(query); query = new EntityEqualityRewritingExpressionVisitor(_queryCompilationContext).Rewrite(query); query = new SubqueryMemberPushdownExpressionVisitor(_queryCompilationContext.Model).Visit(query); query = new NavigationExpandingExpressionVisitor(_queryCompilationContext, Dependencies.EvaluatableExpressionFilter).Expand( query); query = new FunctionPreprocessingExpressionVisitor().Visit(query); return(query); }