annotate Source/Mapping/ScalarDataReaderMapper.cs @ 4:f757da6161a1

!bug 100 + 2h fixed gregression
author cin
date Sun, 24 Aug 2014 17:57:42 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using BLToolkit.Common;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using System.Data.SqlTypes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 namespace BLToolkit.Mapping
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 public class ScalarDataReaderMapper : DataReaderMapper
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 public ScalarDataReaderMapper(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 MappingSchema mappingSchema,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 IDataReader dataReader,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 NameOrIndexParameter nameOrIndex)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 : base(mappingSchema, dataReader)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 _index = nameOrIndex.ByName? dataReader.GetOrdinal(nameOrIndex.Name): nameOrIndex.Index;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 private readonly int _index;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 public int Index
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 get { return _index; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 #region IMapDataSource Members
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 public override int Count
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 get { return 1; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 public override Type GetFieldType(int index)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 return DataReader.GetFieldType(_index);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 public override string GetName(int index)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 return DataReader.GetName(_index);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 public override object GetValue(object o, int index)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 return base.GetValue(o, _index);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 public override object GetValue(object o, string name)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 return base.GetValue(o, _index);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 public override bool IsNull (object o, int index) { return DataReader.IsDBNull(_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 // Simple type getters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 public override SByte GetSByte (object o, int index) { return base.GetSByte(o, _index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 public override Int16 GetInt16 (object o, int index) { return DataReader.GetInt16 (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 public override Int32 GetInt32 (object o, int index) { return DataReader.GetInt32 (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 public override Int64 GetInt64 (object o, int index) { return DataReader.GetInt64 (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 public override Byte GetByte (object o, int index) { return DataReader.GetByte (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 public override UInt16 GetUInt16 (object o, int index) { return base.GetUInt16(o, _index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 public override UInt32 GetUInt32 (object o, int index) { return base.GetUInt32(o, _index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 public override UInt64 GetUInt64 (object o, int index) { return base.GetUInt64(o, _index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 public override Boolean GetBoolean (object o, int index) { return DataReader.GetBoolean (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 public override Char GetChar (object o, int index) { return DataReader.GetChar (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 public override Single GetSingle (object o, int index) { return DataReader.GetFloat (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 public override Double GetDouble (object o, int index) { return DataReader.GetDouble (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 public override Decimal GetDecimal (object o, int index) { return DataReader.GetDecimal (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 public override Guid GetGuid (object o, int index) { return DataReader.GetGuid (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 public override DateTime GetDateTime(object o, int index) { return DataReader.GetDateTime(_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 public override DateTimeOffset GetDateTimeOffset(object o, int index) { return (DateTimeOffset)DataReader.GetValue(_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 // Nullable type getters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 public override SByte? GetNullableSByte (object o, int index) { return base.GetNullableSByte(o, _index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 public override Int16? GetNullableInt16 (object o, int index) { return DataReader.IsDBNull(_index)? null: (Int16?)DataReader.GetInt16 (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 public override Int32? GetNullableInt32 (object o, int index) { return DataReader.IsDBNull(_index)? null: (Int32?)DataReader.GetInt32 (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 public override Int64? GetNullableInt64 (object o, int index) { return DataReader.IsDBNull(_index)? null: (Int64?)DataReader.GetInt64 (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 public override Byte? GetNullableByte (object o, int index) { return DataReader.IsDBNull(_index)? null: (Byte?) DataReader.GetByte (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 public override UInt16? GetNullableUInt16 (object o, int index) { return base.GetNullableUInt16(o, _index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 public override UInt32? GetNullableUInt32 (object o, int index) { return base.GetNullableUInt32(o, _index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 public override UInt64? GetNullableUInt64 (object o, int index) { return base.GetNullableUInt64(o, _index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 public override Boolean? GetNullableBoolean (object o, int index) { return DataReader.IsDBNull(_index)? null: (Boolean?) DataReader.GetBoolean (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 public override Char? GetNullableChar (object o, int index) { return DataReader.IsDBNull(_index)? null: (Char?) DataReader.GetChar (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 public override Single? GetNullableSingle (object o, int index) { return DataReader.IsDBNull(_index)? null: (Single?) DataReader.GetFloat (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 public override Double? GetNullableDouble (object o, int index) { return DataReader.IsDBNull(_index)? null: (Double?) DataReader.GetDouble (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 public override Decimal? GetNullableDecimal (object o, int index) { return DataReader.IsDBNull(_index)? null: (Decimal?) DataReader.GetDecimal (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 public override Guid? GetNullableGuid (object o, int index) { return DataReader.IsDBNull(_index)? null: (Guid?) DataReader.GetGuid (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 public override DateTime? GetNullableDateTime(object o, int index) { return DataReader.IsDBNull(_index)? null: (DateTime?)DataReader.GetDateTime(_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 public override DateTimeOffset? GetNullableDateTimeOffset(object o, int index) { return DataReader.IsDBNull(_index)? null: (DateTimeOffset?)DataReader.GetValue(_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 // SQL type getters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 public override SqlByte GetSqlByte (object o, int index) { return DataReader.IsDBNull(_index)? SqlByte. Null: DataReader.GetByte (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 public override SqlInt16 GetSqlInt16 (object o, int index) { return DataReader.IsDBNull(_index)? SqlInt16. Null: DataReader.GetInt16 (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 public override SqlInt32 GetSqlInt32 (object o, int index) { return DataReader.IsDBNull(_index)? SqlInt32. Null: DataReader.GetInt32 (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 public override SqlInt64 GetSqlInt64 (object o, int index) { return DataReader.IsDBNull(_index)? SqlInt64. Null: DataReader.GetInt64 (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 public override SqlSingle GetSqlSingle (object o, int index) { return DataReader.IsDBNull(_index)? SqlSingle. Null: DataReader.GetFloat (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 public override SqlBoolean GetSqlBoolean (object o, int index) { return DataReader.IsDBNull(_index)? SqlBoolean. Null: DataReader.GetBoolean (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 public override SqlDouble GetSqlDouble (object o, int index) { return DataReader.IsDBNull(_index)? SqlDouble. Null: DataReader.GetDouble (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 public override SqlDateTime GetSqlDateTime(object o, int index) { return DataReader.IsDBNull(_index)? SqlDateTime.Null: DataReader.GetDateTime(_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 public override SqlDecimal GetSqlDecimal (object o, int index) { return DataReader.IsDBNull(_index)? SqlDecimal. Null: DataReader.GetDecimal (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 public override SqlMoney GetSqlMoney (object o, int index) { return DataReader.IsDBNull(_index)? SqlMoney. Null: DataReader.GetDecimal (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 public override SqlGuid GetSqlGuid (object o, int index) { return DataReader.IsDBNull(_index)? SqlGuid. Null: DataReader.GetGuid (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 public override SqlString GetSqlString (object o, int index) { return DataReader.IsDBNull(_index)? SqlString. Null: DataReader.GetString (_index); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 }