Skip to content

Commit 8993a44

Browse files
hazzikfredericDelaporte
authored andcommitted
Substitute DbType.Currency with DbType.Decimal in OracleManagedDataClientDriver and OracleDataClientDriver
- Align DbType.Currency registration in Oracle8iDialect to other dialects & DbType.Currency specification Fixes #1052
1 parent c863dbc commit 8993a44

File tree

4 files changed

+4
-7
lines changed

4 files changed

+4
-7
lines changed

src/NHibernate.Test/Async/TypesTest/CurrencyTypeFixture.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ protected override string TypeName
2626
[Test]
2727
public async Task ReadWriteAsync()
2828
{
29-
if (Dialect is Oracle8iDialect)
30-
Assert.Ignore("The Oracle dialect maps currency as Number(20, 2), this test can only fail.");
31-
3229
const decimal expected = 5.6435M;
3330

3431
var basic = new CurrencyClass {CurrencyValue = expected};

src/NHibernate.Test/TypesTest/CurrencyTypeFixture.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,6 @@ public void Equals()
4040
[Test]
4141
public void ReadWrite()
4242
{
43-
if (Dialect is Oracle8iDialect)
44-
Assert.Ignore("The Oracle dialect maps currency as Number(20, 2), this test can only fail.");
45-
4643
const decimal expected = 5.6435M;
4744

4845
var basic = new CurrencyClass {CurrencyValue = expected};

src/NHibernate/Dialect/Oracle8iDialect.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ protected virtual void RegisterNumericTypeMappings()
182182
RegisterColumnType(DbType.UInt32, "NUMBER(10,0)");
183183
RegisterColumnType(DbType.UInt64, "NUMBER(20,0)");
184184

185-
RegisterColumnType(DbType.Currency, "NUMBER(20,2)");
185+
RegisterColumnType(DbType.Currency, "NUMBER(22,4)");
186186
RegisterColumnType(DbType.Single, "FLOAT(24)");
187187
RegisterColumnType(DbType.Double, "DOUBLE PRECISION");
188188
// Oracle max precision is 39-40, but .Net is limited to 28-29.

src/NHibernate/Driver/OracleDataClientDriverBase.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ protected override void InitializeParameter(DbParameter dbParam, string name, Sq
129129
else
130130
base.InitializeParameter(dbParam, name, sqlType);
131131
break;
132+
case DbType.Currency:
133+
base.InitializeParameter(dbParam, name, SqlTypeFactory.Decimal);
134+
break;
132135
default:
133136
base.InitializeParameter(dbParam, name, sqlType);
134137
break;

0 commit comments

Comments
 (0)