Ejemplo n.º 1
0
        internal static SqlMetaData SmiExtendedMetaDataToSqlMetaData(SmiExtendedMetaData source)
        {
            if (SqlDbType.Xml == source.SqlDbType)
            {
                return(new SqlMetaData(source.Name,
                                       source.SqlDbType,
                                       source.MaxLength,
                                       source.Precision,
                                       source.Scale,
                                       source.LocaleId,
                                       source.CompareOptions,
                                       source.TypeSpecificNamePart1,
                                       source.TypeSpecificNamePart2,
                                       source.TypeSpecificNamePart3,
                                       true,
                                       source.Type));
            }

            return(new SqlMetaData(source.Name,
                                   source.SqlDbType,
                                   source.MaxLength,
                                   source.Precision,
                                   source.Scale,
                                   source.LocaleId,
                                   source.CompareOptions,
                                   null));
        }
        public override long GetChars(int ordinal, long fieldOffset, char[] buffer, int bufferOffset, int length)
        {
            this.EnsureCanGetCol("GetChars", ordinal);
            SmiExtendedMetaData metaData = this._currentMetaData[ordinal];

            if (base.IsCommandBehavior(CommandBehavior.SequentialAccess) && (metaData.SqlDbType == SqlDbType.Xml))
            {
                return(base.GetStreamingXmlChars(ordinal, fieldOffset, buffer, bufferOffset, length));
            }
            return(ValueUtilsSmi.GetChars(this._readerEventSink, this._currentColumnValuesV3, ordinal, metaData, fieldOffset, buffer, bufferOffset, length));
        }
        public override string GetDataTypeName(int ordinal)
        {
            this.EnsureCanGetMetaData("GetDataTypeName");
            SmiExtendedMetaData data = this._currentMetaData[ordinal];

            if (SqlDbType.Udt == data.SqlDbType)
            {
                return(data.TypeSpecificNamePart1 + "." + data.TypeSpecificNamePart2 + "." + data.TypeSpecificNamePart3);
            }
            return(data.TypeName);
        }
 internal override SmiExtendedMetaData[] GetInternalSmiMetaData()
 {
     if ((this._currentMetaData == null) || (this._visibleColumnCount == this.InternalFieldCount))
     {
         return(this._currentMetaData);
     }
     SmiExtendedMetaData[] dataArray = new SmiExtendedMetaData[this._visibleColumnCount];
     for (int i = 0; i < this._visibleColumnCount; i++)
     {
         dataArray[i] = this._currentMetaData[this._indexMap[i]];
     }
     return(dataArray);
 }
Ejemplo n.º 5
0
 static internal bool IsValidForSmiVersion(SmiExtendedMetaData md, ulong smiVersion)
 {
     if (SmiContextFactory.LatestVersion == smiVersion)
     {
         return(true);
     }
     else
     {
         // 2005 doesn't support Structured nor the new time types
         Debug.Assert(SmiContextFactory.Sql2005Version == smiVersion, "Other versions should have been eliminated during link stage");
         return(md.SqlDbType != SqlDbType.Structured &&
                md.SqlDbType != SqlDbType.Date &&
                md.SqlDbType != SqlDbType.DateTime2 &&
                md.SqlDbType != SqlDbType.DateTimeOffset &&
                md.SqlDbType != SqlDbType.Time);
     }
 }