EntityFramework将Float映射为Int

本文关键字:Int 映射 Float EntityFramework | 更新日期: 2023-09-27 18:09:05

当映射一个从表中提取数据的存储过程时,该存储过程将其中一个字段定义为'float'

如果我忽略这个问题,我最终得到以下错误:

'EOST_GetSome_Result'上的'FieldName'属性无法设置为'System '。两倍的价值。您必须将此属性设置为类型为'System.Int32'的非空值。

映射字段:

   public Nullable<int> FieldName { get; set; }

在数据库级别将float更改为int不是一个选项,那么如何在应用程序级别处理这种情况?

EntityFramework将Float映射为Int

我意识到这是五年后的事了,但我昨天才遇到这种情况,或者至少是这个错误消息。以下是我的发现。

我有一个视图,它结合了其他两个视图的结果。映射到这个视图的c#模型清楚地表明,我的属性是一个整数,而我们称之为"union"的视图显示,列类型在SSMS中是一个"int"。但是,它组合的"左"answers"右"视图都表示,由于某种原因,该列是浮点数。这可能是因为对原始整数值进行了ISNULL操作…我不确定。

无论如何,这两个子视图有一个列,由于某种未知的原因,SQL决定将其视为浮点数。它们在第三种视图中组合在一起,这种视图似乎理解我们期望的是整数。在运行时,然而,我认为结果被返回到实体框架作为一个浮点数,而不是一个int,这使得EF难过,所以它抛出这个错误。

解决方案:我在两个子视图中分别添加了一个CAST(<stuff> AS INT),问题就解决了。