/// <summary> /// Overrides CreateExpressionConverter to return a converter that uses a binding context based on the compiled query parameters, /// rather than a default binding context. /// </summary> /// <returns>An expression converter appropriate for converting this compiled query state instance</returns> protected override ExpressionConverter CreateExpressionConverter() { LambdaExpression lambda = (LambdaExpression)base.Expression; Funcletizer funcletizer = Funcletizer.CreateCompiledQueryEvaluationFuncletizer(this.ObjectContext, lambda.Parameters.First(), lambda.Parameters.Skip(1).ToList().AsReadOnly()); // Return a new expression converter that uses the initialized command tree and binding context. return(new ExpressionConverter(funcletizer, lambda.Body)); }
internal FuncletizingVisitor( Funcletizer funcletizer, Func <Expression, bool> isClientConstant, Func <Expression, bool> isClientVariable) { EntityUtil.CheckArgumentNull(funcletizer, "funcletizer"); EntityUtil.CheckArgumentNull(isClientConstant, "isClientConstant"); EntityUtil.CheckArgumentNull(isClientVariable, "isClientVariable"); _funcletizer = funcletizer; _isClientConstant = isClientConstant; _isClientVariable = isClientVariable; }
internal FuncletizingVisitor( Funcletizer funcletizer, Func<Expression, bool> isClientConstant, Func<Expression, bool> isClientVariable) { EntityUtil.CheckArgumentNull(funcletizer, "funcletizer"); EntityUtil.CheckArgumentNull(isClientConstant, "isClientConstant"); EntityUtil.CheckArgumentNull(isClientVariable, "isClientVariable"); _funcletizer = funcletizer; _isClientConstant = isClientConstant; _isClientVariable = isClientVariable; }
protected virtual ExpressionConverter CreateExpressionConverter() { Funcletizer funcletizer = Funcletizer.CreateQueryFuncletizer(this.ObjectContext); return(new ExpressionConverter(funcletizer, _expression)); }
internal ExpressionConverter(Funcletizer funcletizer, Expression expression) { EntityUtil.CheckArgumentNull(funcletizer, "funcletizer"); EntityUtil.CheckArgumentNull(expression, "expression"); // Funcletize the expression (identify subexpressions that should be evaluated // locally) _funcletizer = funcletizer; expression = funcletizer.Funcletize(expression, out _recompileRequired); // Normalize the expression (replace obfuscated parts of the tree with simpler nodes) LinqExpressionNormalizer normalizer = new LinqExpressionNormalizer(); _expression = normalizer.Visit(expression); _perspective = funcletizer.RootContext.Perspective; _bindingContext = new BindingContext(); _ignoreInclude = 0; _orderByLifter = new OrderByLifter(_aliasGenerator); }
internal FuncletizingVisitor( Funcletizer funcletizer, Func<Expression, bool> isClientConstant, Func<Expression, bool> isClientVariable) { //Contract.Requires(funcletizer != null); //Contract.Requires(isClientConstant != null); //Contract.Requires(isClientVariable != null); _funcletizer = funcletizer; _isClientConstant = isClientConstant; _isClientVariable = isClientVariable; }