我正在使用數據庫優先方法處理asp.net mvc 3 Web應用程序。實體框架將float數據類型映射爲雙精度型
我有一個叫Results
表包含float
類型的兩列(min & max
),但是當我使用實體框架來映射現有的數據庫爲模型類,那麼EF創建一個類Results
與min & max
的數據類型字段爲double
而不是現有數據庫中指定的float
。
那麼爲什麼會發生這種行爲?會導致任何問題嗎?
我正在使用數據庫優先方法處理asp.net mvc 3 Web應用程序。實體框架將float數據類型映射爲雙精度型
我有一個叫Results
表包含float
類型的兩列(min & max
),但是當我使用實體框架來映射現有的數據庫爲模型類,那麼EF創建一個類Results
與min & max
的數據類型字段爲double
而不是現有數據庫中指定的float
。
那麼爲什麼會發生這種行爲?會導致任何問題嗎?
這是正常行爲,按照MSDN。
即使SQL服務器的數據類型real
映射到double
,即使float
肯定是夠了那裏。
但是這裏的類型名稱很混亂。實際上,float
(t-SQL)與double
(.Net)相同:精度爲15位,負1.79769313486232e308的範圍爲正1.79769313486232e308。
我不知道,如果你的問題是相同的,以這樣或不:
http://forums.asp.net/p/1606916/4100117.aspx
,但似乎這應該引起任何問題不會。你可能會失去精度,你的數字會從雙精度到浮點數,但它應該仍然有效,除非你需要額外的數字。
但爲什麼我會丟失數字,如果我改變雙重fload ,,我試着插入像1.123456789,它被正確保存在數據庫中... – 2012-04-24 13:22:22
你可能會失去精度,因爲浮點數的精度爲7 ,而雙精度爲15-16。你不太可能需要這種精度,除非你需要進行某種數學計算。 http://msdn.microsoft.com/en-us/library/b1e65aza(v=vs.100).aspx http://msdn.microsoft.com/en-us/library/678hzkk9(v=vs .100).aspx 這2個鏈接用於float和double數據類型。 – 2012-04-24 13:27:34