2012-07-31 107 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