2012-07-31 108 views
2

我正在使用Asp.net mvc 3并计划将oracle 11g数据库作为后端工程。ASP.Net MVC 3与Oracle

我能够访问oracle服务器,没有问题,数据成功加载到一个html表中。

当我尝试添加,编辑或删除记录时出现问题。我相信这是一个非常简单的问题,但直到现在,我无法弄清楚。下面这个简单的模型用于:

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

的CountryId费尔德使用NUMBER(10),我认为这将作为SQL Server的整数甲骨文创建。但是引发了一个异常,表明它不能把值看作Edm.decimal!

我试图让它变为NUMBER(19),并将CountryId更改为long,并且仍然得到相同的异常。

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

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

回答

0

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

+0

我试过了,没有工作。 – IoC 2012-07-31 10:58:33

+0

对于@LolCoder答案,我想他是说值类型可以设置为Int64。你可以试试吗?数据库中的该列是否允许NULL值?如果是的话,也许可以尝试int?,decimal?,long?,Int32?或Int64 ?. '?'意味着该值可以为null。谢谢。 – 2012-07-31 13:30:49

5

Oracle Data Type Mappings

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

所以,你需要使用decimal数据类型在.NET框架,以支持Oracle中的数据类型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] 
+0

我需要支持C#整数,我应该使用哪种Oracle数据类型? – IoC 2012-07-31 05:34:21

+0

看到我更新的答案.... – 2012-07-31 05:42:52

+0

我应该把那个代码放在哪里? – IoC 2012-07-31 05:57:34