示例#1
0
        internal Expression ProcessNestedWhereOfResourceRoot(Expression rootExpression, MethodCallExpression whereExpression, bool insideNavPropertyWithGetReferenceCmdlet = false)
        {
            ICommand       referenceInstanceBuilderCommand;
            ResourceType   initialResourceType = this.GetInitialResourceType();
            EntityMetadata item = this.schema.EntityMetadataDictionary[initialResourceType.FullName];

            DataServiceQueryProvider.ResultSet resultSet = new DataServiceQueryProvider.ResultSet(initialResourceType);
            Expression expression = null;

            if (insideNavPropertyWithGetReferenceCmdlet)
            {
                referenceInstanceBuilderCommand = new ReferenceInstanceBuilderCommand(initialResourceType, item);
            }
            else
            {
                referenceInstanceBuilderCommand = DataServiceController.Current.GetCommand(CommandType.Read, this.userContext, initialResourceType, item, this.membershipId);
            }
            using (referenceInstanceBuilderCommand)
            {
                UriParametersHelper.AddParametersToCommand(referenceInstanceBuilderCommand, DataServiceController.Current.GetCurrentResourceUri());
                this.TryAddingAllExpressions(rootExpression, whereExpression, referenceInstanceBuilderCommand, resultSet, out expression);
                this.InvokeCommandWithQuota(referenceInstanceBuilderCommand, resultSet);
            }
            IQueryable <DSResource> dSResources            = resultSet.AsQueryable <DSResource>();
            ExpressionNodeReplacer  expressionNodeReplacer = new ExpressionNodeReplacer(expression, Expression.Constant(dSResources));
            Expression expression1 = expressionNodeReplacer.Visit(rootExpression);

            return(expression1);
        }
示例#2
0
        internal Expression ProcessResourceRoot(Expression rootExpression, ConstantExpression whereExpression)
        {
            ResourceType resourceType = this.initialResourceRoot.ResourceType;

            DataServiceQueryProvider.ResultSet resultSet = null;
            EntityMetadata item    = this.schema.EntityMetadataDictionary[resourceType.FullName];
            ICommand       command = DataServiceController.Current.GetCommand(CommandType.Read, this.userContext, resourceType, item, this.membershipId);

            using (command)
            {
                this.InvokeFilteredGet(command, resourceType, null, out resultSet);
            }
            IQueryable <DSResource> dSResources            = resultSet.AsQueryable <DSResource>();
            ExpressionNodeReplacer  expressionNodeReplacer = new ExpressionNodeReplacer(whereExpression, Expression.Constant(dSResources));
            Expression expression = expressionNodeReplacer.Visit(rootExpression);

            return(expression);
        }