protected override Expression VisitMemberExpression(MemberExpression expression)
            {
                _queryModelVisitor
                .BindMemberExpression(
                    expression,
                    (property, querySource, selectExpression)
                    => selectExpression.AddToProjection(property, querySource));

                return(base.VisitMemberExpression(expression));
            }
示例#2
0
            protected override Expression VisitMemberExpression(MemberExpression expression)
            {
                _queryModelVisitor
                .BindMemberExpression(
                    expression,
                    (property, selectExpression)
                    => selectExpression.AddToOrderBy(property, _ordering.OrderingDirection));

                // TODO: Remove expressions when fully server eval'd
                return(base.VisitMemberExpression(expression));
            }
示例#3
0
            private Expression BindOperand(Expression expression)
            {
                var memberExpression = expression as MemberExpression;

                if (memberExpression == null)
                {
                    return(expression as ConstantExpression);
                }

                return(_queryModelVisitor
                       .BindMemberExpression(
                           memberExpression,
                           _querySource,
                           (property, _) => new PropertyAccessExpression(property)));
            }
示例#4
0
            protected override Expression VisitMemberExpression(MemberExpression memberExpression)
            {
                var columnExpression
                    = _queryModelVisitor
                      .BindMemberExpression(
                          memberExpression,
                          (property, querySource, selectExpression)
                          => new ColumnExpression(
                              property,
                              selectExpression.FindTableForQuerySource(querySource).Alias));

                if (columnExpression != null)
                {
                    return(columnExpression);
                }

                _requiresClientEval = true;

                return(null);
            }
示例#5
0
            protected override Expression VisitMemberExpression(MemberExpression expression)
            {
                var newExpression = VisitExpression(expression.Expression);

                if (newExpression != expression.Expression)
                {
                    return(newExpression.Type == typeof(IValueReader)
                        ? (Expression)_queryModelVisitor.BindMemberExpression(expression,
                                                                              (property, selectExpression) =>
                                                                              Expression.Call(
                                                                                  newExpression,
                                                                                  _readValueMethodInfo.MakeGenericMethod(expression.Type),
                                                                                  new Expression[]
                    {
                        Expression.Constant(selectExpression.GetProjectionIndex(property))
                    }))
                        : Expression.MakeMemberAccess(newExpression, expression.Member));
                }

                return(expression);
            }
            protected override Expression VisitMemberExpression(MemberExpression expression)
            {
                var newExpression = VisitExpression(expression.Expression);

                if (newExpression != expression.Expression)
                {
                    return(newExpression.Type == typeof(IValueReader)
                        ? (Expression)_queryModelVisitor.BindMemberExpression(expression,
                                                                              (property, querySource, selectExpression) =>
                    {
                        var projectionIndex = selectExpression.GetProjectionIndex(property, querySource);

                        Contract.Assert(projectionIndex > -1);

                        return Expression.Call(
                            newExpression,
                            _readValueMethodInfo.MakeGenericMethod(expression.Type),
                            Expression.Constant(projectionIndex));
                    })
                        : Expression.MakeMemberAccess(newExpression, expression.Member));
                }

                return(expression);
            }