예제 #1
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);
            }
        }
예제 #2
0
        /// <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);
        }