SqlQueryExpressionComposite ISqlExpressionPreparable <SqlQueryExpressionComposite> .Prepare(
            ISqlExpressionPreparer preparer)
        {
            var expression = (SqlQueryExpression)Expression.Prepare(preparer);

            return(new SqlQueryExpressionComposite(Function, All, expression));
        }
        protected override SqlStatement PrepareExpressions(ISqlExpressionPreparer preparer)
        {
            var when = When;

            if (when != null)
            {
                when = when.Prepare(preparer);
            }

            return(new LoopControlStatement(ControlType, Label, when));
        }
示例#3
0
        protected override SqlStatement PrepareExpressions(ISqlExpressionPreparer preparer)
        {
            var value = Value;

            if (value != null)
            {
                value = value.Prepare(preparer);
            }

            return(new ReturnStatement(value));
        }
        SqlTableColumn ISqlExpressionPreparable <SqlTableColumn> .Prepare(ISqlExpressionPreparer preparer)
        {
            var column = new SqlTableColumn(ColumnName, ColumnType);

            if (DefaultExpression != null)
            {
                column.DefaultExpression = DefaultExpression.Prepare(preparer);
            }

            column.IsIdentity = IsIdentity;
            return(column);
        }
        SqlQueryExpression ISqlExpressionPreparable <SqlQueryExpression> .Prepare(ISqlExpressionPreparer preparer)
        {
            var query = new SqlQueryExpression {
                GroupMax = GroupMax,
                Distinct = Distinct,
            };

            foreach (var item in Items)
            {
                var preparedItem = item.Prepare(preparer);
                query.Items.Add(preparedItem);
            }

            var from = this.From;

            if (from != null)
            {
                from = from.Prepare(preparer);
            }

            query.From = from;

            var where = Where;
            if (where != null)
            {
                where = where.Prepare(preparer);
            }

            query.Where = where;

            var having = Having;

            if (having != null)
            {
                having = having.Prepare(preparer);
            }

            query.Having = having;

            if (GroupBy != null)
            {
                query.GroupBy = new List <SqlExpression>();

                foreach (var groupByItem in GroupBy)
                {
                    var exp = groupByItem.Prepare(preparer);
                    query.GroupBy.Add(exp);
                }
            }

            return(query);
        }
        protected override SqlStatement PrepareExpressions(ISqlExpressionPreparer preparer)
        {
            var test = Condition.Prepare(preparer);

            var statement = new ConditionalStatement(test, Label, Else);

            foreach (var child in Statements)
            {
                statement.Statements.Add(child);
            }

            return(statement);
        }
        protected override SqlStatement PrepareExpressions(ISqlExpressionPreparer preparer)
        {
            var lower = LowerBound.Prepare(preparer);
            var upper = UpperBound.Prepare(preparer);

            var loop = new ForLoopStatement(IndexName, lower, upper, Reverse);

            foreach (var statement in Statements)
            {
                loop.Statements.Add(statement);
            }

            return(loop);
        }
 public static T Prepare <T>(this T preparable, ISqlExpressionPreparer preparer) where T : ISqlExpressionPreparable <T>
 {
     return(preparable.Prepare(preparer));
 }
 protected virtual SqlStatement PrepareExpressions(ISqlExpressionPreparer preparer)
 {
     return(this);
 }
        protected override SqlStatement PrepareExpressions(ISqlExpressionPreparer preparer)
        {
            var value = Value.Prepare(preparer);

            return(new AssignStatement(Variable, value));
        }
示例#11
0
        SqlQueryExpressionFrom ISqlExpressionPreparable <SqlQueryExpressionFrom> .Prepare(ISqlExpressionPreparer preparer)
        {
            var obj = new SqlQueryExpressionFrom();

            foreach (var part in joinParts)
            {
                var onExp = part.OnExpression;
                if (onExp != null)
                {
                    onExp = onExp.Prepare(preparer);
                }

                if (part.IsQuery)
                {
                    obj.joinParts.Add(new JoinPart(part.JoinType, part.Query, onExp));
                }
                else
                {
                    obj.joinParts.Add(new JoinPart(part.JoinType, part.TableName, onExp));
                }
            }

            obj.aliases = new List <string>(aliases);

            foreach (var source in sources)
            {
                var prepared = source.Prepare(preparer);
                obj.sources.Add(prepared);
            }

            return(obj);
        }
示例#12
0
 SqlStatement ISqlExpressionPreparable <SqlStatement> .Prepare(ISqlExpressionPreparer preparer)
 {
     return(PrepareExpressions(preparer));
 }
示例#13
0
        public SqlExpression Prepare(ISqlExpressionPreparer preparer)
        {
            var visitor = new SqlExpressionPrepareVisitor(preparer);

            return(visitor.Visit(this));
        }
        SqlQueryExpressionSource ISqlExpressionPreparable <SqlQueryExpressionSource> .Prepare(ISqlExpressionPreparer preparer)
        {
            var query = Query;

            if (query != null)
            {
                query = (SqlQueryExpression)query.Prepare(preparer);
            }

            return(new SqlQueryExpressionSource(TableName, query, Alias));
        }
示例#15
0
        SqlQueryExpressionItem ISqlExpressionPreparable <SqlQueryExpressionItem> .Prepare(ISqlExpressionPreparer preparer)
        {
            var exp = Expression.Prepare(preparer);

            return(new SqlQueryExpressionItem(exp, Alias));
        }
示例#16
0
        public static SqlExpression Prepare(this SqlExpression expression, ISqlExpressionPreparer preparer)
        {
            var visitor = new SqlExpressionPrepareVisitor(preparer);

            return(visitor.Visit(expression));
        }
 public SqlExpressionPrepareVisitor(ISqlExpressionPreparer preparer)
 {
     this.preparer = preparer;
 }