public override Expression Visit(Expression query) { query = base.Visit(query); query = new SelectExpressionProjectionApplyingExpressionVisitor().Visit(query); query = new CollectionJoinApplyingExpressionVisitor().Visit(query); query = new SelectExpressionTableAliasUniquifyingExpressionVisitor().Visit(query); if (!UseRelationalNulls) { query = new NullSemanticsRewritingVisitor(SqlExpressionFactory).Visit(query); } query = new SqlExpressionOptimizingVisitor(SqlExpressionFactory, UseRelationalNulls).Visit(query); query = new NullComparisonTransformingExpressionVisitor().Visit(query); return(query); }
public override Expression Visit(Expression query) { query = base.Visit(query); query = new SelectExpressionProjectionApplyingExpressionVisitor().Visit(query); query = new CollectionJoinApplyingExpressionVisitor().Visit(query); query = new SelectExpressionTableAliasUniquifyingExpressionVisitor().Visit(query); if (!RelationalOptionsExtension.Extract(_queryCompilationContext.ContextOptions).UseRelationalNulls) { query = new NullSemanticsRewritingVisitor(SqlExpressionFactory).Visit(query); } query = new SqlExpressionOptimizingVisitor(SqlExpressionFactory).Visit(query); query = new NullComparisonTransformingExpressionVisitor().Visit(query); if (query is ShapedQueryExpression shapedQueryExpression) { shapedQueryExpression.ShaperExpression = new ShaperExpressionProcessingExpressionVisitor((SelectExpression)shapedQueryExpression.QueryExpression) .Inject(shapedQueryExpression.ShaperExpression); } return(query); }