Exemplo n.º 1
0
        private Expression GetTupleExpression(ParameterizedExpression expression)
        {
            if (expression.OuterParameter == null)
            {
                return(tupleParameter);
            }

            var parameterOfTuple = context.GetTupleParameter(expression.OuterParameter);

            if (tupleParameters.Contains(parameterOfTuple))
            {
                // Make access on Parameter<Tuple>
                return(Expression.MakeMemberAccess(Expression.Constant(parameterOfTuple), WellKnownMembers.ParameterOfTupleValue));
            }

            // Use ApplyParameter for RecordSet predicates
            if (itemMaterializationContextParameter == null)
            {
                var projectionExpression     = context.Bindings[expression.OuterParameter];
                var applyParameter           = context.GetApplyParameter(projectionExpression);
                var applyParameterExpression = Expression.Constant(applyParameter);
                return(Expression.Property(applyParameterExpression, WellKnownMembers.ApplyParameterValue));
            }

            return(tupleParameter);
        }
Exemplo n.º 2
0
 protected void Visit(ParameterizedExpression expression)
 {
     Visit(expression.Expression);
     builder.Expression = this.currentScope.Expression;
     if (builder.SelectExpression != null)
     {
         builder.SelectExpression = Expression.Lambda <SPModelParameterizedQuery.ResultEvaluator>(EnsureReturnObject(builder.SelectExpression), pRes, pArr);
     }
 }
Exemplo n.º 3
0
        public static SPModelQueryBuilder Translate(ParameterizedExpression expression, ISPModelManagerInternal manager)
        {
            CommonHelper.ConfirmNotNull(manager, "manager");
            CommonHelper.ConfirmNotNull(expression, "expression");
            SPModelQueryExpressionVisitor visitor = new SPModelQueryExpressionVisitor(manager, expression.Parameters);

            visitor.Visit(expression);
            return(visitor.builder);
        }
        private void AddColumns(ParameterizedExpression parameterizedExpression, IEnumerable <int> expressionColumns)
        {
            var isSubqueryParameter = topSubquery != null && parameterizedExpression.OuterParameter == topSubquery.OuterParameter;
            var isNotParametrized   = topSubquery == null && parameterizedExpression.OuterParameter == null;

            if (isSubqueryParameter || isNotParametrized)
            {
                columns.AddRange(expressionColumns.Select(i => new Pair <int, Expression>(i, parameterizedExpression)));
            }
        }
Exemplo n.º 5
0
        public ParameterizedExpression ExtractParameters()
        {
            lock (_lock)
            {
                if (_parameterizedExpression == null)
                    _parameterizedExpression = new ParameterizedExpression(Text);
            }

            return _parameterizedExpression;
        }
Exemplo n.º 6
0
        public static SPModelParameterizedQuery Create(Expression expression, ISPModelManagerInternal manager)
        {
            CommonHelper.ConfirmNotNull(expression, "expression");
            CommonHelper.ConfirmNotNull(manager, "manager");

            object[] args;
            ParameterizedExpression   pq     = ParameterizedExpression.Create(expression, out args);
            SPModelParameterizedQuery cached = cache.GetInstance(pq, p => new SPModelParameterizedQuery(pq, manager));

            return(cached.BindParameters(args, manager));
        }
Exemplo n.º 7
0
        public ParameterizedExpression ExtractParameters()
        {
            lock (_lock)
            {
                if (_parameterizedExpression == null)
                {
                    _parameterizedExpression = new ParameterizedExpression(Text);
                }
            }

            return(_parameterizedExpression);
        }
Exemplo n.º 8
0
        private SPModelParameterizedQuery(ParameterizedExpression expression, ISPModelManagerInternal manager)
        {
            SPModelQueryBuilder builder = SPModelQueryExpressionVisitor.Translate(expression, manager);

            this.Descriptor = builder.ModelType != null?SPModelDescriptor.Resolve(builder.ModelType) : manager.Descriptor;

            this.Expression     = builder.Expression;
            this.TaxonomyFields = new ReadOnlyCollection <string>(builder.TaxonomyFields.ToArray());

            this.expression  = expression;
            this.executeMode = builder.ExecuteMode;
            this.emptyArray  = Array.CreateInstance(this.Descriptor.ModelType, 0);
            if (builder.SelectExpression != null)
            {
                this.projector = ((Expression <ResultEvaluator>)builder.SelectExpression).Compile();
            }
            else
            {
                this.projector = (ResultEvaluator)Delegate.CreateDelegate(typeof(ResultEvaluator), mOfType.MakeGenericMethod(this.Descriptor.ModelType));
            }
            this.evaluators = new ReadOnlyDictionary <string, ParameterEvaluator>(builder.ParameterEvaluators);
            for (int i = 0; i < PIndexMax; i++)
            {
                parameterNames[i] = (string)builder.Parameters[i];
            }

            if (builder.ModelType != null)
            {
                this.ContentTypeFilterExpression = builder.ContentTypeIds.Aggregate(Caml.False, (v, a) => v | Caml.OfContentType(a));
            }
            if (!builder.SelectAllProperties)
            {
                List <string> properties = new List <string>(builder.SelectProperties);
                if (!properties.Contains(SPBuiltInFieldName.ContentTypeId))
                {
                    properties.Add(SPBuiltInFieldName.ContentTypeId);
                }
                this.SelectProperties = new ReadOnlyCollection <string>(properties);
            }
        }