protected DbScalarExpression UpdateScalar(DbScalarExpression scalar, DbSelectExpression select)
        {
            if (select != scalar.Select)
            {
                return(new DbScalarExpression(scalar.Type, select));
            }

            return(scalar);
        }
Exemple #2
0
        protected override Expression VisitScalar(DbScalarExpression subquery)
        {
            this.Write("(");
            this.WriteLine(Indentation.Inner);
            this.Visit(subquery.Select);
            this.WriteLine(Indentation.Same);
            this.Write(")");
            this.Indent(Indentation.Outer);

            return(subquery);
        }
Exemple #3
0
        protected override Expression VisitScalar(DbScalarExpression scalar)
        {
            var select  = scalar.Select;
            var colType = this.language.TypeSystem.GetColumnType(scalar.Type);

            if (string.IsNullOrEmpty(select.Columns[0].Name))
            {
                var name = select.Columns.GetAvailableColumnName("scalar");

                select = select.SetColumns(new[] { new DbColumnDeclaration(name, select.Columns[0].Expression, colType) });
            }

            this.currentFrom = new DbJoinExpression(JoinType.OuterApply, this.currentFrom, select, null);

            return(new DbColumnExpression(scalar.Type, colType, scalar.Select.Alias, select.Columns[0].Name));
        }
 protected virtual bool CompareScalar(DbScalarExpression a, DbScalarExpression b)
 {
     return(this.Compare(a.Select, b.Select));
 }
        protected DbAggregateSubqueryExpression UpdateAggregateSubquery(DbAggregateSubqueryExpression aggregate, DbScalarExpression subquery)
        {
            if (subquery != aggregate.AggregateAsSubquery)
            {
                return(new DbAggregateSubqueryExpression(aggregate.GroupByAlias, aggregate.AggregateInGroupSelect, subquery));
            }

            return(aggregate);
        }
 protected virtual Expression VisitScalar(DbScalarExpression scalar)
 {
     return(this.UpdateScalar(scalar, this.Visit(scalar.Select) as DbSelectExpression));
 }
Exemple #7
0
 public DbAggregateSubqueryExpression(TableAlias groupByAlias, Expression aggregateInGroupSelect, DbScalarExpression aggregateAsSubquery) : base(DbExpressionType.AggregateSubquery, aggregateAsSubquery.Type)
 {
     this.AggregateInGroupSelect = aggregateInGroupSelect;
     this.GroupByAlias           = groupByAlias;
     this.AggregateAsSubquery    = aggregateAsSubquery;
 }