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> /// <returns></returns> public JoinTable Convert() { JoinTable result = new JoinTable() { LeftTable = RightTable, RightTable = LeftTable, Conditions = new JoinConditions() }; foreach (var condition in this.Conditions) { result.Conditions.Add(new JoinCondition(condition.RightCol, condition.LeftCol)); } return(result); }