コード例 #1
0
 public SourceColumn(SourceColumn column, bool allowNull) // NOT NULL => NULL
 {
     Source           = column.Source;
     SourceColumnName = column.SourceColumnName;
     ColumnDbType     = column.ColumnDbType;
     AllowNull        = allowNull;
 }
コード例 #2
0
 protected QueryColumnBase(QueryColumnSourceBase source)
 {
     if (source == null)
     {
         throw new ArgumentNullException(nameof(source));
     }
     Source = source;
 }
コード例 #3
0
        internal bool TryFindSource(string sourceNameOrAlias, out QueryColumnSourceBase source)
        {
            if (this.sources.TryGetValue(sourceNameOrAlias, out source))
            {
                return(true);
            }

            return(false);
        }
コード例 #4
0
        internal QueryColumnBase AddOutputColumn(QueryColumnBase outputColumn)
        {
            if (!IsOutputColumnResolved(outputColumn.OutputColumnName, out QueryColumnBase col))
            {
                QueryColumnSourceBase source = ContainsSourceId(outputColumn.SourceId);
                if (source != null)
                {
                    col = AddResolveOutputColumn(new QueryColumnE(source, outputColumn.OutputColumnName, outputColumn.SourceColumnName, outputColumn.ColumnDbType, outputColumn.AllowNull));
                }
                else
                {
                    if (outputColumn.Source is QuerySourceOnNull)
                    {
                        return(AddResolveOutputColumn(outputColumn));
                    }
                    else if (outputColumn.Source is QuerySourceOnConstant)
                    {
                        return(AddResolveOutputColumn(outputColumn));
                    }
                    else if (outputColumn.Source is QuerySourceOnVariable)
                    {
                        return(AddResolveOutputColumn(outputColumn));
                    }
                    else
                    {
                        // APPLY ( SELECT ... => the source is not in this query specification!!
                        //throw new NotSupportedException("Output column not registered.");
                        return(AddResolveOutputColumn(outputColumn));
                    }
                }
            }


            if (!col.ColumnDbType.HasValue)
            {
                if (outputColumn.ColumnDbType.HasValue)
                {
                    col.SetColumnDbType(outputColumn.ColumnDbType.Value); // mismatched output queries?!?!
                }
                else
                {
                    // Output column type not resolved!
                }
            }

            if (!outputColumn.ColumnDbType.HasValue)
            {
                //                throw new ArgumentException("Output column type not resolved.", nameof(outputColumn));
            }

            return(outputColumn);
        }
コード例 #5
0
        public QueryColumnE(QueryColumnSourceBase source, string outputColumnName, string sourceColumnName, DbType?columnDbType, bool?allowNull)
            : base(source)
        {
            if (string.IsNullOrEmpty(outputColumnName))
            {
                throw new ArgumentNullException(nameof(outputColumnName));
            }

            this.outputColumnName  = outputColumnName;
            this._sourceColumnName = sourceColumnName;
            this._columnDbType     = columnDbType;
            this._allowNull        = allowNull;
        }
コード例 #6
0
 public SourceColumnType(QueryColumnSourceBase source, string sourceColumnName, DbType columnDbType, bool allowNull)
 {
     if (source == null)
     {
         throw new ArgumentNullException(nameof(source));
     }
     if (string.IsNullOrEmpty(sourceColumnName))
     {
         throw new ArgumentNullException(nameof(sourceColumnName));
     }
     Source           = source;
     SourceColumnName = sourceColumnName;
     ColumnDbType     = columnDbType;
     AllowNull        = allowNull;
 }
コード例 #7
0
 internal void AddMqeColumnSource(QueryColumnSourceBase source)
 {
     sources.Add(source.Key, source);
 }
コード例 #8
0
 internal void SetTargetAsSource(QueryColumnSourceBase source)
 {
     _source = source;
 }