/// <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);
 }
示例#3
0
        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);
        }