protected override Expression VisitMemberExpression(MemberExpression expression) { _queryModelVisitor .BindMemberExpression( expression, (property, querySource, selectExpression) => selectExpression.AddToProjection(property, querySource)); return(base.VisitMemberExpression(expression)); }
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)); }
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))); }
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); }
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); }