示例#1
0
 public SelectedTables(SelectedTable first, Entity.IQueryFactory fac)
 {
     this.tables = new List <SelectedTable>();
     this.tables.Add(first);
     this.joins = new List <JoinTable>();
     this.Fac   = fac;
 }
示例#2
0
        public void Add(SelectedTable table, SelectedTable from)
        {
            if (this.tables.Contains(from) == false)
            {
                throw new Exception("要加的表没有选择!");
            }
            else
            {
                var condition = Fac.GetCanJoinedTables(from.Table, JoinQueryType.All);
                var con       = condition.FirstOrDefault(p => (p.LeftTable.Table.DBName == table.Table.DBName && p.RightTable.Table.DBName == from.Table.DBName) ||
                                                         (p.LeftTable.Table.DBName == from.Table.DBName && p.RightTable.Table.DBName == table.Table.DBName));
                if (con == null)
                {
                    throw new Exception("未找到连接条件");
                }

                var addJoin = new JoinTable();
                addJoin.LeftTable  = from;
                addJoin.RightTable = table;

                if (con.LeftTable.Table.DBName == table.Table.DBName)
                {
                    foreach (var joincondition in con.Conditions)
                    {
                        addJoin.Conditions.Add(new JoinCondition(joincondition.RightCol, joincondition.LeftCol));
                    }
                }
                else
                {
                    addJoin.Conditions.AddRange(con.Conditions.ToArray());
                }
                this.joins.Add(addJoin);
                this.tables.Add(table);
            }
        }
示例#3
0
        /// <summary>
        /// 增加一个表
        /// </summary>
        /// <param name="Table"></param>
        /// <param name="fromTable"></param>
        /// <param name="joinType"></param>
        public void   Add(IQueryTable Table,
                          SelectedTable fromTable = null)
        {
            if (fromTable == null)
            {
                this.Ins.SelectedTables = new SelectedTables(new SelectedTable()
                {
                    Table             = Table,
                    SelectedTableName = Table.ShowName
                }, this.Facotry);
            }
            else
            {
                var    count        = this.Ins.SelectedTables.Tables.Count(p => p.Table.DBName == Table.DBName);
                string selectedName = Table.ShowName + (count == 0?"":count.ToString());

                this.Ins.SelectedTables.Add(new SelectedTable()
                {
                    Table             = Table,
                    SelectedTableName = selectedName
                }, fromTable);
            }
        }
示例#4
0
 private static string GetSelectedTableSql(SelectedTable table)
 {
     return(string.Format("[{0}] as [{1}]", table.Table.DBName, table.SelectedTableName));
 }