【发布时间】:2019-09-27 15:55:43
【问题描述】:
我目前正在从 SQL Server 存储过程中读取数据,它返回为 Decimal(38, 20)。
我知道 .Net 小数点是 (28, 10),但 EF 为此生成的模型类显示 Decimal?。当我查询表时,代码会引发转换溢出错误,因为它试图将 SQL Server 小数点放在 .Net 小数点字段中。
有没有一种简单的方法可以通过数据上下文将其转换为 .Net 十进制?基本上我无权修改 SQL Server 数据类型。
SQL Server 数据类型:
Amount Decimal(38, 20)
实体
public class EntityClass
{
public decimal? Amount { get; set; }
}
当我打电话时
var eee = _context.EntityClass
.Select(x => x.Amount)
.FirstOrDefaultAsync();
我明白了
转换溢出错误
【问题讨论】:
-
什么版本的 EF?您需要保留多少个有效数字?数据库中的什么值导致溢出?
-
这个肯定是个问题 (-4210862852.86000000000000000000)。
-
是的。我可以重现。什么版本的 EF?
-
为什么你不在课堂上使用 double ?公双?金额{得到;放; }
-
@YairI double 不是
just,它会让事情变得更糟。它的范围比 Decimal 小 并且保证会导致舍入错误。它也不会影响这个错误 - 字段的范围太长了
标签: c# sql-server entity-framework entity-framework-6