Mercurial > pub > bltoolkit
diff Source/Mapping/ScalarDataReaderMapper.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Source/Mapping/ScalarDataReaderMapper.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,126 @@ +using System; +using System.Data; + +using BLToolkit.Common; +using System.Data.SqlTypes; + +namespace BLToolkit.Mapping +{ + public class ScalarDataReaderMapper : DataReaderMapper + { + public ScalarDataReaderMapper( + MappingSchema mappingSchema, + IDataReader dataReader, + NameOrIndexParameter nameOrIndex) + : base(mappingSchema, dataReader) + { + _index = nameOrIndex.ByName? dataReader.GetOrdinal(nameOrIndex.Name): nameOrIndex.Index; + } + + private readonly int _index; + public int Index + { + get { return _index; } + } + + #region IMapDataSource Members + + public override int Count + { + get { return 1; } + } + + public override Type GetFieldType(int index) + { + return DataReader.GetFieldType(_index); + } + + public override string GetName(int index) + { + return DataReader.GetName(_index); + } + + public override object GetValue(object o, int index) + { + return base.GetValue(o, _index); + } + + public override object GetValue(object o, string name) + { + return base.GetValue(o, _index); + } + + public override bool IsNull (object o, int index) { return DataReader.IsDBNull(_index); } + + // Simple type getters. + // + [CLSCompliant(false)] + public override SByte GetSByte (object o, int index) { return base.GetSByte(o, _index); } + public override Int16 GetInt16 (object o, int index) { return DataReader.GetInt16 (_index); } + public override Int32 GetInt32 (object o, int index) { return DataReader.GetInt32 (_index); } + public override Int64 GetInt64 (object o, int index) { return DataReader.GetInt64 (_index); } + + public override Byte GetByte (object o, int index) { return DataReader.GetByte (_index); } + [CLSCompliant(false)] + public override UInt16 GetUInt16 (object o, int index) { return base.GetUInt16(o, _index); } + [CLSCompliant(false)] + public override UInt32 GetUInt32 (object o, int index) { return base.GetUInt32(o, _index); } + [CLSCompliant(false)] + public override UInt64 GetUInt64 (object o, int index) { return base.GetUInt64(o, _index); } + + public override Boolean GetBoolean (object o, int index) { return DataReader.GetBoolean (_index); } + public override Char GetChar (object o, int index) { return DataReader.GetChar (_index); } + public override Single GetSingle (object o, int index) { return DataReader.GetFloat (_index); } + public override Double GetDouble (object o, int index) { return DataReader.GetDouble (_index); } + public override Decimal GetDecimal (object o, int index) { return DataReader.GetDecimal (_index); } + public override Guid GetGuid (object o, int index) { return DataReader.GetGuid (_index); } + public override DateTime GetDateTime(object o, int index) { return DataReader.GetDateTime(_index); } + public override DateTimeOffset GetDateTimeOffset(object o, int index) { return (DateTimeOffset)DataReader.GetValue(_index); } + + // Nullable type getters. + // + [CLSCompliant(false)] + public override SByte? GetNullableSByte (object o, int index) { return base.GetNullableSByte(o, _index); } + public override Int16? GetNullableInt16 (object o, int index) { return DataReader.IsDBNull(_index)? null: (Int16?)DataReader.GetInt16 (_index); } + public override Int32? GetNullableInt32 (object o, int index) { return DataReader.IsDBNull(_index)? null: (Int32?)DataReader.GetInt32 (_index); } + public override Int64? GetNullableInt64 (object o, int index) { return DataReader.IsDBNull(_index)? null: (Int64?)DataReader.GetInt64 (_index); } + + public override Byte? GetNullableByte (object o, int index) { return DataReader.IsDBNull(_index)? null: (Byte?) DataReader.GetByte (_index); } + [CLSCompliant(false)] + public override UInt16? GetNullableUInt16 (object o, int index) { return base.GetNullableUInt16(o, _index); } + [CLSCompliant(false)] + public override UInt32? GetNullableUInt32 (object o, int index) { return base.GetNullableUInt32(o, _index); } + [CLSCompliant(false)] + public override UInt64? GetNullableUInt64 (object o, int index) { return base.GetNullableUInt64(o, _index); } + + public override Boolean? GetNullableBoolean (object o, int index) { return DataReader.IsDBNull(_index)? null: (Boolean?) DataReader.GetBoolean (_index); } + public override Char? GetNullableChar (object o, int index) { return DataReader.IsDBNull(_index)? null: (Char?) DataReader.GetChar (_index); } + public override Single? GetNullableSingle (object o, int index) { return DataReader.IsDBNull(_index)? null: (Single?) DataReader.GetFloat (_index); } + public override Double? GetNullableDouble (object o, int index) { return DataReader.IsDBNull(_index)? null: (Double?) DataReader.GetDouble (_index); } + public override Decimal? GetNullableDecimal (object o, int index) { return DataReader.IsDBNull(_index)? null: (Decimal?) DataReader.GetDecimal (_index); } + public override Guid? GetNullableGuid (object o, int index) { return DataReader.IsDBNull(_index)? null: (Guid?) DataReader.GetGuid (_index); } + public override DateTime? GetNullableDateTime(object o, int index) { return DataReader.IsDBNull(_index)? null: (DateTime?)DataReader.GetDateTime(_index); } + public override DateTimeOffset? GetNullableDateTimeOffset(object o, int index) { return DataReader.IsDBNull(_index)? null: (DateTimeOffset?)DataReader.GetValue(_index); } + +#if !SILVERLIGHT + + // SQL type getters. + // + public override SqlByte GetSqlByte (object o, int index) { return DataReader.IsDBNull(_index)? SqlByte. Null: DataReader.GetByte (_index); } + public override SqlInt16 GetSqlInt16 (object o, int index) { return DataReader.IsDBNull(_index)? SqlInt16. Null: DataReader.GetInt16 (_index); } + public override SqlInt32 GetSqlInt32 (object o, int index) { return DataReader.IsDBNull(_index)? SqlInt32. Null: DataReader.GetInt32 (_index); } + public override SqlInt64 GetSqlInt64 (object o, int index) { return DataReader.IsDBNull(_index)? SqlInt64. Null: DataReader.GetInt64 (_index); } + public override SqlSingle GetSqlSingle (object o, int index) { return DataReader.IsDBNull(_index)? SqlSingle. Null: DataReader.GetFloat (_index); } + public override SqlBoolean GetSqlBoolean (object o, int index) { return DataReader.IsDBNull(_index)? SqlBoolean. Null: DataReader.GetBoolean (_index); } + public override SqlDouble GetSqlDouble (object o, int index) { return DataReader.IsDBNull(_index)? SqlDouble. Null: DataReader.GetDouble (_index); } + public override SqlDateTime GetSqlDateTime(object o, int index) { return DataReader.IsDBNull(_index)? SqlDateTime.Null: DataReader.GetDateTime(_index); } + public override SqlDecimal GetSqlDecimal (object o, int index) { return DataReader.IsDBNull(_index)? SqlDecimal. Null: DataReader.GetDecimal (_index); } + public override SqlMoney GetSqlMoney (object o, int index) { return DataReader.IsDBNull(_index)? SqlMoney. Null: DataReader.GetDecimal (_index); } + public override SqlGuid GetSqlGuid (object o, int index) { return DataReader.IsDBNull(_index)? SqlGuid. Null: DataReader.GetGuid (_index); } + public override SqlString GetSqlString (object o, int index) { return DataReader.IsDBNull(_index)? SqlString. Null: DataReader.GetString (_index); } + +#endif + + #endregion + } +}