/// <summary> /// Add join table(private) /// 結合テーブル追加(private) /// </summary> /// <param name="baseType"></param> /// <param name="joinType"></param> /// <param name="baseColumn"></param> /// <param name="joinColumn"></param> /// <param name="isInner"></param> private void AddJoin(Type baseType, Type joinType, string baseColumn, string joinColumn, bool isInner = true) { string joinTableName = this.GetDataAccessAttribute <DataAccessAttribute>(joinType).TableName; string baseTableName = this.GetDataAccessAttribute <DataAccessAttribute>(baseType).TableName; string joinTableType = (isInner) ? "inner" : "left"; StringBuilder joinConditions = new StringBuilder(); joinConditions.Append(string.Format("{0}.{1} = {2}.{3}", baseTableName, baseColumn, joinTableName, joinColumn)); JoinSql.AppendLine(string.Format("{0} join {1} on {2}", joinTableType, joinTableName, joinConditions.ToString())); this.AddSelectType(joinType); }
/// <summary> /// Add join table (And join only ) /// 結合テーブル追加 (And結合のみ) /// </summary> /// <param name="baseType"></param> /// <param name="joinColumns">The same name row ,同名列</param> /// <param name="isInner"></param> public void AddJoinTable(Type baseType, Type joinType, string[] joinColumns, bool isInner = true) { DataAccessAttribute attribite = this.GetDataAccessAttribute <DataAccessAttribute>(joinType); string tableName = this.GetDataAccessAttribute <DataAccessAttribute>(baseType).TableName; string joinTableType = (isInner) ? "inner" : "left"; StringBuilder joinConditions = new StringBuilder(); for (int i = 0; i < joinColumns.Length; i++) { if (i.Equals(0)) { joinConditions.Append(" and "); } joinConditions.Append(string.Format("{0}.{1} = {2}.{3}", tableName, joinColumns[i], attribite.TableName, joinColumns[i])); } JoinSql.AppendLine(string.Format("{0} join {1} on {2}", joinTableType, attribite.TableName, joinConditions.ToString())); this.AddSelectType(joinType); }