Model中的Float类型字段在数据库中自动创建为真实类型?

时间:2013-05-19 08:08:33

标签: c# asp.net-mvc entity-framework asp.net-mvc-4 floating-point

我使用mvc4。我有一个模型。在该模型中,我创建了一个名为“AllFuels”的数据类型为Float的字段。 但是当在数据库中自动创建表时,“AllFuels”字段的数据类型是真实的。我使用模型第一种方法。任何人都知道这种情况发生的原因吗?

public float AllFuels { get; set; }

但是表中的这个字段是作为真实数据类型创建的。

1 个答案:

答案 0 :(得分:0)

  

......为什么会这样?

嗯,这很容易 - 因为这是编程到EF中的映射。

重要吗?

请看以下内容:

所以“近似范围对于两者都是相同的,存储量也是如此:它们都是32位浮点二进制点类型。令人讨厌的是BOL reference for data type conversion中没有特别提到.NET float,这使得很难快速查看

此外,Edm.Float在Edm数据类型(MSDN: Conceptual Model Types (CSDL))中列为7位精度的浮点,因此与.NET中的float和SQL Server中的实际匹配( CSDL是描述entites,关系等的XML语言,并且是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"

编辑 Guru Lasse V. Karlsen完全正确地要求我对此声明进行限定:Single is equivalent to float,我的严重要点是你必须知道要查找Single而不是float,以便能够在参考中找到信息。