我正在使用数据库优先方法处理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