2017-06-26 30 views
0

N-Hibernateを使用してOracleデータベースからListを取得しようとしています。データベースでは、一部のフィールドの精度がより高い値(20〜22桁)を持ち、C#クラスのタイプがdoubleのプロパティを持ちます。OCI-22053:オーバーフロー・エラー

この場合、データベースからC#Listにデータを保存するにはどうすればよいですか?

TestTable

Oracle Field - TestField 
     Value - -3845585825867490000000000000000 

のOracle列のデータ型

FLOAT - TestField 

C#プロパティ

[Property(Column = "TestField", NotNull = true)] 
public virtual double TestField { get; set; } 

私はNにHibernateを使用していて、私はROUNDを使用することはできません

ICriteria crit = this.Session.CreateCriteria(typeof(TestTable)); 
IList<TestTable> list = crit.List<TestTable>(); //got error at this line 

C#コード。

答えて

1

C#プロパティのデータ型をdecimalに変更してみてください - あなたの状況を処理するのに十分な精度があると思います。

NHibernateフィールドhereのマッピングの詳細については、decimalのようです。

0

FLOATは、Oracle内でNUMBERサブタイプであり、.Net decimalにマップする必要があります。 .Net doubleと一致しません。

実際に必要なものが.Net doubleのようなものであれば、OracleではBINARY_DOUBLE(またはBINARY_FLOAT)を使用してください。

関連する問題