Skip to content

Commit 5de7fe9

Browse files
committed
Add handling BigInteger
1 parent 37d4456 commit 5de7fe9

File tree

8 files changed

+90
-16
lines changed

8 files changed

+90
-16
lines changed

src/NHibernate/Type/ByteType.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections;
33
using System.Data;
44
using System.Data.Common;
5+
using System.Numerics;
56
using NHibernate.Engine;
67
using NHibernate.SqlTypes;
78

@@ -23,12 +24,21 @@ public ByteType()
2324

2425
public override object Get(DbDataReader rs, int index, ISessionImplementor session)
2526
{
26-
return Convert.ToByte(rs[index]);
27+
return rs[index] switch
28+
{
29+
30+
BigInteger bi => (byte) bi,
31+
var c => Convert.ToByte(c)
32+
};
2733
}
2834

2935
public override object Get(DbDataReader rs, string name, ISessionImplementor session)
3036
{
31-
return Convert.ToByte(rs[name]);
37+
return rs[name] switch
38+
{
39+
BigInteger bi => (byte) bi,
40+
var c => Convert.ToByte(c)
41+
};
3242
}
3343

3444
public override System.Type ReturnedClass

src/NHibernate/Type/Int16Type.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using NHibernate.SqlTypes;
66
using System.Collections.Generic;
77
using System.Data;
8+
using System.Numerics;
89

910
namespace NHibernate.Type
1011
{
@@ -31,7 +32,11 @@ public override object Get(DbDataReader rs, int index, ISessionImplementor sessi
3132
{
3233
try
3334
{
34-
return Convert.ToInt16(rs[index]);
35+
return rs[index] switch
36+
{
37+
BigInteger bi => (short) bi,
38+
var c => Convert.ToInt16(c)
39+
};
3540
}
3641
catch (Exception ex)
3742
{
@@ -43,7 +48,11 @@ public override object Get(DbDataReader rs, string name, ISessionImplementor ses
4348
{
4449
try
4550
{
46-
return Convert.ToInt16(rs[name]);
51+
return rs[name]switch
52+
{
53+
BigInteger bi => (short) bi,
54+
var c => Convert.ToInt16(c)
55+
};
4756
}
4857
catch (Exception ex)
4958
{

src/NHibernate/Type/Int32Type.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using NHibernate.SqlTypes;
66
using System.Collections.Generic;
77
using System.Data;
8+
using System.Numerics;
89

910
namespace NHibernate.Type
1011
{
@@ -27,11 +28,16 @@ public override string Name
2728
}
2829

2930
private static readonly Int32 ZERO = 0;
31+
3032
public override object Get(DbDataReader rs, int index, ISessionImplementor session)
3133
{
3234
try
3335
{
34-
return Convert.ToInt32(rs[index]);
36+
return rs[index] switch
37+
{
38+
BigInteger bi => (int) bi,
39+
var c => Convert.ToInt32(c)
40+
};
3541
}
3642
catch (Exception ex)
3743
{
@@ -43,7 +49,11 @@ public override object Get(DbDataReader rs, string name, ISessionImplementor ses
4349
{
4450
try
4551
{
46-
return Convert.ToInt32(rs[name]);
52+
return rs[name] switch
53+
{
54+
BigInteger bi => (int) bi,
55+
var c => Convert.ToInt32(c)
56+
};
4757
}
4858
catch (Exception ex)
4959
{

src/NHibernate/Type/Int64Type.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.Data;
55
using System.Data.Common;
6+
using System.Numerics;
67
using NHibernate.Engine;
78
using NHibernate.SqlTypes;
89

@@ -31,7 +32,11 @@ public override object Get(DbDataReader rs, int index, ISessionImplementor sessi
3132
{
3233
try
3334
{
34-
return Convert.ToInt64(rs[index]);
35+
return rs[index] switch
36+
{
37+
BigInteger bi => (long) bi,
38+
var c => Convert.ToInt64(c)
39+
};
3540
}
3641
catch (Exception ex)
3742
{
@@ -43,7 +48,11 @@ public override object Get(DbDataReader rs, string name, ISessionImplementor ses
4348
{
4449
try
4550
{
46-
return Convert.ToInt64(rs[name]);
51+
return rs[name] switch
52+
{
53+
BigInteger bi => (long) bi,
54+
var c => Convert.ToInt64(c)
55+
};
4756
}
4857
catch (Exception ex)
4958
{

src/NHibernate/Type/SByteType.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.Data;
55
using System.Data.Common;
6+
using System.Numerics;
67
using NHibernate.Engine;
78
using NHibernate.SqlTypes;
89

@@ -31,7 +32,11 @@ public override object Get(DbDataReader rs, int index, ISessionImplementor sessi
3132
{
3233
try
3334
{
34-
return Convert.ToSByte(rs[index]);
35+
return rs[index] switch
36+
{
37+
BigInteger bi => (sbyte) bi,
38+
var c => Convert.ToSByte(c)
39+
};
3540
}
3641
catch (Exception ex)
3742
{
@@ -43,7 +48,11 @@ public override object Get(DbDataReader rs, string name, ISessionImplementor ses
4348
{
4449
try
4550
{
46-
return Convert.ToSByte(rs[name]);
51+
return rs[name] switch
52+
{
53+
BigInteger bi => (sbyte) bi,
54+
var c => Convert.ToSByte(c)
55+
};
4756
}
4857
catch (Exception ex)
4958
{

src/NHibernate/Type/UInt16Type.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.Data;
55
using System.Data.Common;
6+
using System.Numerics;
67
using NHibernate.Engine;
78
using NHibernate.SqlTypes;
89

@@ -31,7 +32,11 @@ public override object Get(DbDataReader rs, int index, ISessionImplementor sessi
3132
{
3233
try
3334
{
34-
return Convert.ToUInt16(rs[index]);
35+
return rs[index] switch
36+
{
37+
BigInteger bi => (ushort) bi,
38+
var c => Convert.ToUInt16(c)
39+
};
3540
}
3641
catch (Exception ex)
3742
{
@@ -43,7 +48,11 @@ public override object Get(DbDataReader rs, string name, ISessionImplementor ses
4348
{
4449
try
4550
{
46-
return Convert.ToUInt16(rs[name]);
51+
return rs[name] switch
52+
{
53+
BigInteger bi => (ushort) bi,
54+
var c => Convert.ToUInt16(c)
55+
};
4756
}
4857
catch (Exception ex)
4958
{

src/NHibernate/Type/UInt32Type.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.Data;
55
using System.Data.Common;
6+
using System.Numerics;
67
using NHibernate.Engine;
78
using NHibernate.SqlTypes;
89

@@ -31,7 +32,11 @@ public override object Get(DbDataReader rs, int index, ISessionImplementor sessi
3132
{
3233
try
3334
{
34-
return Convert.ToUInt32(rs[index]);
35+
return rs[index] switch
36+
{
37+
BigInteger bi => (uint) bi,
38+
var c => Convert.ToUInt32(c)
39+
};
3540
}
3641
catch (Exception ex)
3742
{
@@ -43,7 +48,11 @@ public override object Get(DbDataReader rs, string name, ISessionImplementor ses
4348
{
4449
try
4550
{
46-
return Convert.ToUInt32(rs[name]);
51+
return rs[name] switch
52+
{
53+
BigInteger bi => (uint) bi,
54+
var c => Convert.ToUInt32(c)
55+
};
4756
}
4857
catch (Exception ex)
4958
{

src/NHibernate/Type/UInt64Type.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.Data;
55
using System.Data.Common;
6+
using System.Numerics;
67
using NHibernate.Engine;
78
using NHibernate.SqlTypes;
89

@@ -30,7 +31,11 @@ public override object Get(DbDataReader rs, int index, ISessionImplementor sessi
3031
{
3132
try
3233
{
33-
return Convert.ToUInt64(rs[index]);
34+
return rs[index] switch
35+
{
36+
BigInteger bi => (ulong)bi,
37+
var c => Convert.ToUInt64(c)
38+
};
3439
}
3540
catch (Exception ex)
3641
{
@@ -42,7 +47,11 @@ public override object Get(DbDataReader rs, string name, ISessionImplementor ses
4247
{
4348
try
4449
{
45-
return Convert.ToUInt64(rs[name]);
50+
return rs[name] switch
51+
{
52+
BigInteger bi => (ulong) bi,
53+
var c => Convert.ToUInt64(c)
54+
};
4655
}
4756
catch (Exception ex)
4857
{

0 commit comments

Comments
 (0)