public static Expression ExtractParameters( [NotNull] Expression expressionTree, [NotNull] QueryContext queryContext) { var functionEvaluationDisabledExpression = new FunctionEvaluationDisablingVisitor().Visit(expressionTree); var partialEvaluationInfo = EvaluatableTreeFindingExpressionVisitor.Analyze(functionEvaluationDisabledExpression); var visitor = new ParameterExtractingExpressionVisitor(partialEvaluationInfo, queryContext); return(visitor.Visit(functionEvaluationDisabledExpression)); }
/// <summary> /// Takes an expression tree and finds and evaluates all its evaluatable subtrees. /// </summary> public static Expression EvaluateIndependentSubtrees(Expression expressionTree, IEvaluatableExpressionFilter evaluatableExpressionFilter) { ArgumentUtility.CheckNotNull("expressionTree", expressionTree); ArgumentUtility.CheckNotNull("evaluatableExpressionFilter", evaluatableExpressionFilter); var partialEvaluationInfo = EvaluatableTreeFindingExpressionVisitor.Analyze(expressionTree, evaluatableExpressionFilter); var visitor = new PartialEvaluatingExpressionVisitor(partialEvaluationInfo, evaluatableExpressionFilter); return(visitor.Visit(expressionTree)); }
public static Expression ExtractParameters( [NotNull] Expression expression, [NotNull] QueryContext queryContext, [NotNull] IEvaluatableExpressionFilter evaluatableExpressionFilter) { var partialEvaluationInfo = EvaluatableTreeFindingExpressionVisitor .Analyze(expression, evaluatableExpressionFilter); var visitor = new ParameterExtractingExpressionVisitor(partialEvaluationInfo, queryContext); return(visitor.Visit(expression)); }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public virtual Expression ExtractParameters([NotNull] Expression expression) { var oldPartialEvaluationInfo = _partialEvaluationInfo; _partialEvaluationInfo = EvaluatableTreeFindingExpressionVisitor .Analyze(expression, _evaluatableExpressionFilter); try { return(Visit(expression)); } finally { _partialEvaluationInfo = oldPartialEvaluationInfo; } }