public QueryTable(string alias, int explicitPrimaryKeys, JoinType?joinType, SqlStatementBuilder queryBuilder, IQueryTables tables, ISqlStatement parentStatement) { Alias = alias ?? throw new ArgumentNullException(nameof(alias)); ExplicitPrimaryKeys = explicitPrimaryKeys; JoinType = joinType; QueryBuilder = queryBuilder ?? throw new ArgumentNullException(nameof(queryBuilder)); Tables = tables ?? throw new ArgumentNullException(nameof(tables)); ParentStatement = parentStatement ?? throw new ArgumentNullException(nameof(parentStatement)); }
/// <summary> /// Build a list of columns /// </summary> static IEnumerable <ISelectColumn> BuildColumns(SqlStatementBuilder queryParts, IQueryTables tables) { return(queryParts.AllSelectColumns.Select(BuildColumn)); ISelectColumn BuildColumn((bool isRowId, SqlStatementBuilder.SelectColumn col) col) => new SelectColumn( new [] { (col.col.Table, col.col.Column, CodingConstants.Null.String) },
/// <summary> /// Return a table object for the SELECT and each JOIN /// </summary> static IEnumerable <IQueryTable> BuildTables(SqlStatementBuilder queryBuilder, IQueryTables tables, ISqlStatement sqlStatement) { yield return(new QueryTable(queryBuilder.PrimaryTableAlias, queryBuilder.PrimaryTableKeys.Count, null, queryBuilder, tables, sqlStatement)); foreach (var j in queryBuilder.Joins) { yield return(new QueryTable(j.Alias, j.PrimaryKeyColumns.Count, j.JoinType, queryBuilder, tables, sqlStatement)); } }
public SelectColumns(SqlStatementBuilder queryBuilder, IQueryTables tables) { // TODO: this constructor is called a lot. Why?? Columns = BuildColumns(queryBuilder, tables).Enumerate(); }