public SelectedTables(SelectedTable first, Entity.IQueryFactory fac) { this.tables = new List <SelectedTable>(); this.tables.Add(first); this.joins = new List <JoinTable>(); this.Fac = fac; }
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); } }
/// <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); } }
private static string GetSelectedTableSql(SelectedTable table) { return(string.Format("[{0}] as [{1}]", table.Table.DBName, table.SelectedTableName)); }