示例#1
0
            public SubQueryColumn(QuerySource.SubQuery querySource, QueryField field)
            {
                QuerySource = querySource;
                Field       = field;

                ParsingTracer.WriteLine(field);
            }
示例#2
0
            public override FieldIndex[] Select <T>(ExpressionParser <T> parser)
            {
                ParsingTracer.WriteLine(this);
                ParsingTracer.WriteLine(QuerySource);
                ParsingTracer.IncIndentLevel();

                if (_index == null)
                {
                    SetSubIndex(parser);

                    _index = new FieldIndex[_subIndex.Length];

                    for (var i = 0; i < _subIndex.Length; i++)
                    {
                        var col = QuerySource.SubSql.Select.Columns[_subIndex[i].Index];
                        _index[i] = new FieldIndex {
                            Index = QuerySource.SqlQuery.Select.Add(col), Field = this
                        };
                    }
                }

                ParsingTracer.DecIndentLevel();
                ParsingTracer.WriteLine(QuerySource);
                return(_index);
            }
示例#3
0
        public override FieldIndex[] Select <T>(ExpressionParser <T> parser)
        {
            ParsingTracer.WriteLine(this);
            ParsingTracer.IncIndentLevel();

            if (_indexes == null)
            {
                var indexes = new List <FieldIndex>(Fields.Count);

                foreach (var field in Fields)
                {
                    foreach (var idx in field.Select(parser))
                    {
                        indexes.Add(new FieldIndex {
                            Index = idx.Index, Field = field
                        });
                    }
                }

                _indexes = indexes.ToArray();
            }

            ParsingTracer.DecIndentLevel();
            return(_indexes);
        }
示例#4
0
            public ExprColumn(QuerySource source, Expression expr, string alias)
            {
                QuerySource = source;
                Expr        = expr;
                _alias      = alias;

                ParsingTracer.WriteLine(this);
            }
示例#5
0
            public Column(QuerySource.Table table, SqlField field, MemberMapper mapper)
            {
                Field  = field;
                Table  = table;
                Mapper = mapper;

                ParsingTracer.WriteLine(this);
            }
示例#6
0
            public ExprColumn(QuerySource source, ISqlExpression expr, string alias)
            {
                QuerySource    = source;
                _sqlExpression = expr;
                _alias         = alias;

                ParsingTracer.WriteLine("sql", this);
            }
示例#7
0
            public SubQuerySourceColumn(SubQuery querySource, QuerySource sourceColumn)
                : base(sourceColumn.SqlQuery, sourceColumn.Lambda, sourceColumn.Sources)
            {
                QuerySource  = querySource;
                SourceColumn = sourceColumn;

                ParsingTracer.WriteLine(sourceColumn);
            }
示例#8
0
            public override FieldIndex[] Select <T>(ExpressionParser <T> _)
            {
                ParsingTracer.WriteLine(this);
                ParsingTracer.WriteLine("table", Table);
                ParsingTracer.IncIndentLevel();

                var index = new[] { new FieldIndex {
                                        Index = Table.SqlQuery.Select.Add(Field, Field.Alias), Field = this
                                    } };

                ParsingTracer.DecIndentLevel();
                ParsingTracer.WriteLine("table", Table);
                return(index);
            }
示例#9
0
            public override FieldIndex[] Select <T>(ExpressionParser <T> parser)
            {
                ParsingTracer.WriteLine(this);
                ParsingTracer.WriteLine(GroupBySource.BaseQuery);
                ParsingTracer.IncIndentLevel();

                if (_index == null)
                {
                    _index = GroupBySource.BaseQuery.Select(parser);
                }

                ParsingTracer.DecIndentLevel();
                ParsingTracer.WriteLine(GroupBySource.BaseQuery);
                return(_index);
            }
示例#10
0
            public SubQuery(SqlQuery currentSql, SqlQuery subSql, QuerySource baseQuery, bool addToSource)
                : base(currentSql, baseQuery.Lambda, baseQuery)
            {
                ParsingTracer.WriteLine(subSql);

                SubSql = subSql;

                if (addToSource)
                {
                    SqlQuery.From.Table(subSql);
                }

                foreach (var field in baseQuery.Fields)
                {
                    EnsureField(field);
                }

                ParsingTracer.DecIndentLevel();
            }
示例#11
0
            public override FieldIndex[] Select <T>(ExpressionParser <T> parser)
            {
                ParsingTracer.WriteLine(this);
                ParsingTracer.WriteLine(QuerySource);
                ParsingTracer.IncIndentLevel();

                if (_index == null)
                {
                    if (_sqlExpression == null)
                    {
                        _sqlExpression = Parse(parser, QuerySource.Sources);
                    }

                    _index = new[] { new FieldIndex {
                                         Index = QuerySource.SqlQuery.Select.Add(_sqlExpression, _alias), Field = this
                                     } };
                }

                ParsingTracer.DecIndentLevel();
                ParsingTracer.WriteLine(QuerySource);
                return(_index);
            }
示例#12
0
        protected QuerySource(SqlQuery sqlQuery, LambdaInfo lambda, params QuerySource[] baseQueries)
        {
            SqlQuery = sqlQuery;
            Lambda   = lambda;

            _sources = baseQueries;

#if DEBUG && TRACE_PARSING
            ParsingTracer.WriteLine(lambda);
            ParsingTracer.WriteLine(this);

            foreach (var query in baseQueries)
            {
                ParsingTracer.WriteLine("base", query);
            }

            foreach (var field in Fields)
            {
                ParsingTracer.WriteLine("field ", field);
            }

            ParsingTracer.IncIndentLevel();
#endif
        }
示例#13
0
            public GroupByColumn(QuerySource.GroupBy groupBySource)
            {
                GroupBySource = groupBySource;

                ParsingTracer.WriteLine("groupBy", this);
            }