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 整数工作。但是引发了一个异常,表明它不能将值作为 Edm.decimal !

我尝试将其设为 NUMBER(19) 并将 CountryId 更改为 long ,但仍然得到相同的异常。

我花了很长时间寻找一个使用 asp.net mvc 和 oracle 的开源项目,但我找不到任何!

任何想法,为什么 oracle 不支持整数,长?如何使它与我的 MVC 项目按预期工作?

4

2 回答 2

5

Oracle 数据类型映射

此数据类型是 NUMBER(38) 数据类型的别名,旨在使 OracleDataReader 返回 System.Decimal 或 OracleNumber 而不是整数值。使用 .NET Framework 数据类型可能会导致溢出。

因此,您需要使用decimal.net 框架中的NUMBER数据类型来支持 Oracle 中的数据类型。

如果您按以下方式映射数据类型会更好:

[.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

您是否尝试过使用小数或 Int32?我从网上找到的一些文档中得到了我的建议:http: //docs.oracle.com/cd/E11882_01/win.112/e18754/featLINQ.htm。让我知道这可能对你有用。

于 2012-07-31T05:19:09.260 回答