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); }
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); }