Skip to content

Commit 1721af4

Browse files
David EllingsworthDavid Ellingsworth
authored andcommitted
GH-3530: Add a DbDataReader for performing direct casts of values returned from the indexer method.
1 parent 51104b2 commit 1721af4

File tree

2 files changed

+195
-0
lines changed

2 files changed

+195
-0
lines changed
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
using System;
2+
using System.Collections;
3+
using System.Data.Common;
4+
using System.Diagnostics.CodeAnalysis;
5+
6+
namespace NHibernate.AdoNet
7+
{
8+
public partial class DirectCastDbDataReader : DbDataReaderWrapper
9+
{
10+
public DirectCastDbDataReader(DbDataReader dbDataReader) : base(dbDataReader) { }
11+
12+
public override object this[int ordinal] => DataReader[ordinal];
13+
14+
public override object this[string name] => DataReader[name];
15+
16+
public override int Depth => DataReader.Depth;
17+
18+
public override int FieldCount => DataReader.FieldCount;
19+
20+
public override bool HasRows => DataReader.HasRows;
21+
22+
public override bool IsClosed => DataReader.IsClosed;
23+
24+
public override int RecordsAffected => DataReader.RecordsAffected;
25+
26+
public override bool GetBoolean(int ordinal)
27+
{
28+
return (bool) DataReader[ordinal];
29+
}
30+
31+
public override byte GetByte(int ordinal)
32+
{
33+
return (byte) DataReader[ordinal];
34+
}
35+
36+
public override long GetBytes(int ordinal, long dataOffset, byte[] buffer, int bufferOffset, int length)
37+
{
38+
return DataReader.GetBytes(ordinal, dataOffset, buffer, bufferOffset, length);
39+
}
40+
41+
public override char GetChar(int ordinal)
42+
{
43+
return (char) DataReader[ordinal];
44+
}
45+
46+
public override long GetChars(int ordinal, long dataOffset, char[] buffer, int bufferOffset, int length)
47+
{
48+
return DataReader.GetChars(ordinal, dataOffset, buffer, bufferOffset, length);
49+
}
50+
51+
public override string GetDataTypeName(int ordinal)
52+
{
53+
return DataReader.GetDataTypeName(ordinal);
54+
}
55+
56+
public override DateTime GetDateTime(int ordinal)
57+
{
58+
return (DateTime) DataReader[ordinal];
59+
}
60+
61+
public override decimal GetDecimal(int ordinal)
62+
{
63+
return (decimal) DataReader[ordinal];
64+
}
65+
66+
public override double GetDouble(int ordinal)
67+
{
68+
return (double) DataReader[ordinal];
69+
}
70+
71+
public override IEnumerator GetEnumerator()
72+
{
73+
while (DataReader.Read())
74+
{
75+
yield return this;
76+
}
77+
}
78+
79+
public override System.Type GetFieldType(int ordinal)
80+
{
81+
return DataReader.GetFieldType(ordinal);
82+
}
83+
84+
public override float GetFloat(int ordinal)
85+
{
86+
return (float) DataReader[ordinal];
87+
}
88+
89+
public override Guid GetGuid(int ordinal)
90+
{
91+
return (Guid) DataReader[ordinal];
92+
}
93+
94+
public override short GetInt16(int ordinal)
95+
{
96+
return (short) DataReader[ordinal];
97+
}
98+
99+
public override int GetInt32(int ordinal)
100+
{
101+
return (int) DataReader[ordinal];
102+
}
103+
104+
public override long GetInt64(int ordinal)
105+
{
106+
return (long) DataReader[ordinal];
107+
}
108+
109+
public override string GetName(int ordinal)
110+
{
111+
return DataReader.GetName(ordinal);
112+
}
113+
114+
public override int GetOrdinal(string name)
115+
{
116+
return DataReader.GetOrdinal(name);
117+
}
118+
119+
public override string GetString(int ordinal)
120+
{
121+
return (string) DataReader[ordinal];
122+
}
123+
124+
public override object GetValue(int ordinal)
125+
{
126+
return DataReader.GetValue(ordinal);
127+
}
128+
129+
public override int GetValues(object[] values)
130+
{
131+
return DataReader.GetValues(values);
132+
}
133+
134+
public override bool IsDBNull(int ordinal)
135+
{
136+
return DataReader.IsDBNull(ordinal);
137+
}
138+
139+
public override bool NextResult()
140+
{
141+
return DataReader.NextResult();
142+
}
143+
144+
public override bool Read()
145+
{
146+
return DataReader.Read();
147+
}
148+
149+
public override void Close()
150+
{
151+
DataReader.Close();
152+
}
153+
}
154+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//------------------------------------------------------------------------------
2+
// <auto-generated>
3+
// This code was generated by AsyncGenerator.
4+
//
5+
// Changes to this file may cause incorrect behavior and will be lost if
6+
// the code is regenerated.
7+
// </auto-generated>
8+
//------------------------------------------------------------------------------
9+
10+
11+
using System;
12+
using System.Collections;
13+
using System.Data.Common;
14+
using System.Diagnostics.CodeAnalysis;
15+
16+
namespace NHibernate.AdoNet
17+
{
18+
using System.Threading.Tasks;
19+
using System.Threading;
20+
public partial class DirectCastDbDataReader : DbDataReaderWrapper
21+
{
22+
23+
public override Task<bool> NextResultAsync(CancellationToken cancellationToken)
24+
{
25+
if (cancellationToken.IsCancellationRequested)
26+
{
27+
return Task.FromCanceled<bool>(cancellationToken);
28+
}
29+
return DataReader.NextResultAsync(cancellationToken);
30+
}
31+
32+
public override Task<bool> ReadAsync(CancellationToken cancellationToken)
33+
{
34+
if (cancellationToken.IsCancellationRequested)
35+
{
36+
return Task.FromCanceled<bool>(cancellationToken);
37+
}
38+
return DataReader.ReadAsync(cancellationToken);
39+
}
40+
}
41+
}

0 commit comments

Comments
 (0)