Iam使用mvc4。我有一個模型。在該模型中,我創建了一個名爲「AllFuels」的數據類型爲Float的字段。 但是當表在數據庫中自動創建的字段「AllFuels」的數據類型是real.Iam使用模型的第一個方法。任何人都可以知道這種情況發生的原因嗎?模型中的浮點類型字段作爲實數類型在數據庫中自動創建?
public float AllFuels { get; set; }
但是這個表中的字段被創建爲真正的數據類型。
Iam使用mvc4。我有一個模型。在該模型中,我創建了一個名爲「AllFuels」的數據類型爲Float的字段。 但是當表在數據庫中自動創建的字段「AllFuels」的數據類型是real.Iam使用模型的第一個方法。任何人都可以知道這種情況發生的原因嗎?模型中的浮點類型字段作爲實數類型在數據庫中自動創建?
public float AllFuels { get; set; }
但是這個表中的字段被創建爲真正的數據類型。
...爲什麼會發生這種情況?
那麼,這很容易 - 因爲這是編程到EF中的映射。
重要嗎?
請看下面:
因此,「大致範圍」†對於兩者都是一樣的,存儲量也是如此:它們都是32位浮點二進制點類型。令人討厭的是,.NET浮點數在BOL reference for data type conversion中沒有特別提到,這使得很難快速查看這個數據。‡。
另外,Edm.Float
在EDM數據類型(MSDN: Conceptual Model Types (CSDL))與7位精度浮點列出的,使得與漂浮在.NET和實際在SQL服務器相匹配(CSDL是描述XML語言entites,關係等,並且是used by EF)。
那我該怎麼辦?
微軟在ADO.NET中對浮點的說法是什麼?如果你閱讀:MSDN - Data Type Mappings in ADO.NET (Floating-Point Numbers)他們說「測試」。那麼做那個,如果這個精度對你來說還不夠,那麼你的。NET類型需要一個double
相反,這應該成爲在SQL Server更高的精度類型(它會轉化爲float(53)
,我相信)
†我不能很快找到IEEE參考,所以我會告訴你wikipedia for the definition of "approximate range"。
‡編輯大師Lasse V. Karlsen是完全正確的問我有資格這樣一句話:Single
is equivalent to float
,我不好表達的觀點是,你必須知道去找Single
,而不是float
能夠找到信息參考資料。
你是什麼意思「未明確提及」?根據該表將Real映射到Single(C#中的關鍵字「float」)。 –
@ LasseV.Karlsen。你說得對,它確實提到了它,但它並不能讓那些不會立即知道'Single'是'float'的人(我不知道它是否應該這樣做)。我對「_specifically mentioned_」的評論是,你必須在該頁面上做更多比Ctrl + F5作爲「float」。 –