Пример #1
0
        public void RegisterTable(TableDeclarationClause declaration)
        {
            QueryRoot queryRoot;

            if (queryTables.TryGetValue(declaration, out queryRoot))
            {
                return;
            }
            var queryEntity = CreateQueryEntity(null, declaration.Name);

            queryRoot = new QueryRoot(queryEntity, declaration);
            queryTables.Add(declaration, queryRoot);
        }
Пример #2
0
        public override ISqlElement VisitTableDeclaration(TableDeclarationClause clause)
        {
            var context = contexts.Peek();

            if (context.AreaColumn == null)
            {
                context.AreaColumn = new ColumnReferenceExpression
                {
                    Name  = PropertyNames.area,
                    Table = clause
                }
            }
            ;
            return(base.VisitTableDeclaration(clause));
        }
        private IColumnSource RewriteTableIfNeeded(TableDeclarationClause declaration)
        {
            var queryRoot        = queryEntityTree.Get(declaration);
            var subqueryRequired = queryRoot.subqueryRequired ||
                                   queryRoot.additionalFields != null;

            if (!subqueryRequired)
            {
                declaration.Name = queryRoot.entity.mapping.DbTableName;
                return(declaration);
            }
            var stripResult  = Strip(queryRoot.entity);
            var selectClause = new SelectClause
            {
                Source = queryEntityTree.GetTableDeclaration(queryRoot.entity)
            };

            if (stripResult == StripResult.HasNoReferences)
            {
                selectClause.IsSelectAll = true;
            }
            else
            {
                AddJoinClauses(queryRoot.entity, selectClause);
                AddColumns(queryRoot, selectClause);
                if (queryRoot.additionalFields != null)
                {
                    foreach (var c in queryRoot.additionalFields)
                    {
                        selectClause.Fields.Add(c);
                    }
                }
            }
            return(new SubqueryTable
            {
                Alias = declaration.Alias ?? nameGenerator.GenerateSubqueryName(),
                Query = new SubqueryClause
                {
                    Query = new SqlQuery
                    {
                        Unions = { new UnionClause {
                                       SelectClause = selectClause
                                   } }
                    }
                }
            });
        }
Пример #4
0
        public JoinClause GetJoinSql(QueryEntity enumEntity)
        {
            if (!enumEntity.mapping.ObjectName.HasValue)
            {
                throw new InvalidOperationException("assertion failure");
            }
            var declaration = new TableDeclarationClause
            {
                Name  = "simple1c.enumMappings",
                Alias = nameGenerator.GenerateTableName()
            };

            return(new JoinClause
            {
                Source = declaration,
                JoinKind = JoinKind.Left,
                Condition = new AndExpression
                {
                    Left = new EqualityExpression
                    {
                        Left = new ColumnReferenceExpression
                        {
                            Name = "enumName",
                            Table = declaration
                        },
                        Right = new LiteralExpression
                        {
                            Value = enumEntity.mapping.ObjectName.Value.Name.ToLower()
                        }
                    },
                    Right = new EqualityExpression
                    {
                        Left = new ColumnReferenceExpression
                        {
                            Name = "orderIndex",
                            Table = declaration
                        },
                        Right = new ColumnReferenceExpression
                        {
                            Name = enumEntity.GetSingleColumnName("Порядок"),
                            Table = queryEntityTree.GetTableDeclaration(enumEntity)
                        }
                    }
                }
            });
        }
Пример #5
0
 public virtual ISqlElement VisitTableDeclaration(TableDeclarationClause clause)
 {
     return(clause);
 }
Пример #6
0
 public override ISqlElement VisitTableDeclaration(TableDeclarationClause clause)
 {
     builder.Append(clause.Name);
     WriteAlias(clause.Alias);
     return(clause);
 }
Пример #7
0
 public override ISqlElement VisitTableDeclaration(TableDeclarationClause clause)
 {
     return(visit(clause));
 }
Пример #8
0
 public override ISqlElement VisitTableDeclaration(TableDeclarationClause clause)
 {
     contexts.Peek().Register(clause.GetRefName(), clause);
     return(base.VisitTableDeclaration(clause));
 }
Пример #9
0
 public override ISqlElement VisitTableDeclaration(TableDeclarationClause clause)
 {
     contexts.Peek().MainTable = clause;
     return(base.VisitTableDeclaration(clause));
 }