Пример #1
0
        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));
        }
Пример #2
0
        /// <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) },
Пример #3
0
        /// <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));
            }
        }
Пример #4
0
        public SelectColumns(SqlStatementBuilder queryBuilder, IQueryTables tables)
        {
            // TODO: this constructor is called a lot. Why??

            Columns = BuildColumns(queryBuilder, tables).Enumerate();
        }