예제 #1
0
    protected internal virtual Expression VisitSqlTableValuedFunction(SqlTableValuedFunctionExpression sqlFunction)
    {
        ReadOnlyCollection <Expression> args = Visit(sqlFunction.Arguments);

        if (args != sqlFunction.Arguments)
        {
            return(new SqlTableValuedFunctionExpression(sqlFunction.SqlFunction, sqlFunction.ViewTable, sqlFunction.SingleColumnType, sqlFunction.Alias, args));
        }
        return(sqlFunction);
    }
예제 #2
0
    protected internal override Expression VisitSqlTableValuedFunction(SqlTableValuedFunctionExpression sqlFunction)
    {
        ReadOnlyCollection <Expression> args = Visit(sqlFunction.Arguments);
        Alias newAlias = aliasMap.TryGetC(sqlFunction.Alias) ?? sqlFunction.Alias;

        if (args != sqlFunction.Arguments || sqlFunction.Alias != newAlias)
        {
            return(new SqlTableValuedFunctionExpression(sqlFunction.SqlFunction, sqlFunction.ViewTable, sqlFunction.SingleColumnType, newAlias, args));
        }
        return(sqlFunction);
    }
예제 #3
0
        protected override Expression VisitSqlTableValuedFunction(SqlTableValuedFunctionExpression sqlFunction)
        {
            var columns = CurrentScope.Keys.Where(ce => ce.Alias == sqlFunction.Alias).ToList();

            CurrentScope.SetRange(columns, columns.Cast<Expression>());

            ReadOnlyCollection<Expression> args = sqlFunction.Arguments.NewIfChange(a => Visit(a));
            if (args != sqlFunction.Arguments)
                return new SqlTableValuedFunctionExpression(sqlFunction.SqlFunction, sqlFunction.Table, sqlFunction.Alias, args);
            return sqlFunction;
        }
예제 #4
0
    protected internal override Expression VisitSqlTableValuedFunction(SqlTableValuedFunctionExpression sqlFunction)
    {
        var columns = CurrentScope.Keys.Where(ce => ce.Alias == sqlFunction.Alias).ToList();

        CurrentScope.SetRange(columns, columns);

        ReadOnlyCollection <Expression> args = Visit(sqlFunction.Arguments);

        if (args != sqlFunction.Arguments)
        {
            return(new SqlTableValuedFunctionExpression(sqlFunction.SqlFunction, sqlFunction.ViewTable, sqlFunction.SingleColumnType, sqlFunction.Alias, args));
        }
        return(sqlFunction);
    }
예제 #5
0
 protected override Expression VisitSqlTableValuedFunction(SqlTableValuedFunctionExpression sqlFunction)
 {
     ReadOnlyCollection<Expression> args = sqlFunction.Arguments.NewIfChange(a => MakeSqlValue(Visit(a)));
     if (args != sqlFunction.Arguments)
         return new SqlTableValuedFunctionExpression(sqlFunction.SqlFunction, sqlFunction.Table, sqlFunction.Alias, args);
     return sqlFunction;
 }
예제 #6
0
 protected internal override Expression VisitSqlTableValuedFunction(SqlTableValuedFunctionExpression sqlFunction)
 {
     this.aliases.Add(sqlFunction.Alias);
     return(base.VisitSqlTableValuedFunction(sqlFunction));
 }
예제 #7
0
        protected override Expression VisitSqlTableValuedFunction(SqlTableValuedFunctionExpression sqlFunction)
        {
            sb.Append(sqlFunction.SqlFunction);
            sb.Append("(");
            for (int i = 0, n = sqlFunction.Arguments.Count; i < n; i++)
            {
                Expression exp = sqlFunction.Arguments[i];
                if (i > 0)
                    sb.Append(", ");
                this.Visit(exp);
            }
            sb.Append(")");

            return sqlFunction;
        }