2012-04-24 113 views
13

我正在使用数据库优先方法处理asp.net mvc 3 Web应用程序。实体框架将float数据类型映射为双精度型

我有一个叫Results表包含float类型的两列(min & max),但是当我使用实体框架来映射现有的数据库为模型类,那么EF创建一个类Resultsmin & max的数据类型字段为double而不是现有数据库中指定的float

那么为什么会发生这种行为?会导致任何问题吗?

回答

16

这是正常行为,按照MSDN

即使SQL服务器的数据类型real映射到double,即使float肯定是够了那里。

但是这里的类型名称很混乱。实际上,float (t-SQL)double (.Net)相同:精度为15位,负1.79769313486232e308的范围为正1.79769313486232e308。

1

我不知道,如果你的问题是相同的,以这样或不:

http://forums.asp.net/p/1606916/4100117.aspx

,但似乎这应该引起任何问题不会。你可能会失去精度,你的数字会从双精度到浮点数,但它应该仍然有效,除非你需要额外的数字。

+0

但为什么我会丢失数字,如果我改变双重fload ,,我试着插入像1.123456789,它被正确保存在数据库中... – 2012-04-24 13:22:22

+0

你可能会失去精度,因为浮点数的精度为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

相关问题