2

Asp.net mvc 3 を使用してプロジェクトに取り組んでおり、Oracle 11g データベースをバックエンドとして使用する予定です。

問題なく Oracle サーバーにアクセスでき、データが html テーブルに正常にロードされました。

レコードを追加、編集、または削除しようとすると問題が発生します。非常に単純な問題だと思いますが、今までは理解できませんでした。次の単純なモデルが使用されます。

class Country
{
    public int CountryId { get; set; }
    public string CountryName { get; set; }
}

CountryId フィールドは、Oracle で NUMBER(10) を使用して作成されました。これは、SQL Server Integer として機能すると考えたからです。しかし、例外が発生しました。これは、値を Edm.decimal として受け取ることができなかったことを示しています。

NUMBER(19) にしようとしましたが、CountryId を long に変更しても、同じ例外が発生します。

Oracle で asp.net mvc を使用しているオープン ソース プロジェクトを長時間探しましたが、見つかりませんでした。

オラクルが整数をサポートしていないのはなぜですか?私のMVCプロジェクトで期待どおりに動作させる方法は?

4

2 に答える 2

5

Oracle Data Type Mappingsから、

このデータ型はNUMBER(38)データ型のエイリアスであり、OracleDataReaderが整数値ではなくSystem.DecimalまたはOracleNumberを返すように設計されています。.NET Frameworkデータ型を使用すると、オーバーフローが発生する可能性があります。

decimalしたがって、Oracleでデータ型をサポートするには、.netFrameworkでデータ型を使用する必要がありNUMBERます。

次の方法でデータ型をマッピングするとよいでしょう。

[.NET: Int32] = [Oracle:NUMBER(2)..NUMBER(9)*] 
[.NET: Int64] = [Oracle:NUMBER(10)..NUMBER(18)*]
[.NET: Double] = [Oracle:NUMBER(x, 0)..NUMBER(x, 15)*]
[.NET: Double] = [Oracle: FLOAT]
[.NET: Decimal] = [Oracle:NUMBER] 
于 2012-07-31T05:30:09.223 に答える
0

10 進数または Int32 を使用してみましたか? オンラインで見つけたいくつかのドキュメントから提案を得ています: http://docs.oracle.com/cd/E11882_01/win.112/e18754/featLINQ.htm。これがどのように機能するか教えてください。

于 2012-07-31T05:19:09.260 に答える