public void BeginJoin(JoinElement join) { this.tables.Push(join); if (join.JoinType == JoinType.InnerJoin) { from.Append("\r\n INNER JOIN "); } else if (join.JoinType == JoinType.LeftOuterJoin) { from.Append("\r\n LEFT OUTER JOIN "); } else if (join.JoinType == JoinType.RightOuterJoin) { from.Append("\r\n RIGHT OUTER JOIN "); } else if (join.JoinType == JoinType.FullOuterJoin) { from.Append("\r\n FULL OUTER JOIN "); } else { throw new InvalidOperationException("Jointype not supported."); } from.Append(GetUniqueFullNameWithAlias(join)); from.Append(" ON ("); string sep = ""; for (int i = 0; i < join.Relation.FromColumns.Count; i++) { from.Append(sep); from.Append(GetFullNameOrAlias(join.LeftTable)); from.Append(".["); from.Append(join.Relation.FromColumns[i]); from.Append("]="); from.Append(GetFullNameOrAlias(join)); from.Append(".["); from.Append(join.Relation.ToColumns[i]); from.Append("]"); sep = " AND "; } from.Append(")"); }
public void EndJoin(JoinElement join) { this.tables.Pop(); }