Entity framework 实体框架5-十进制保存问题-转换溢出

Entity framework 实体框架5-十进制保存问题-转换溢出,entity-framework,decimal,Entity Framework,Decimal,如果我在SQL 2008 R2中有一个表,其中有一个类型为Decimal(35,18)的可空列,并将其拉入edmx。在不出现转换溢出错误的情况下,我可以成功保存到DB的最大十进制值是 79228162514 这是非常奇怪的,因为它与十进制的上限相匹配(如果您比较的数字不是实际值) 79228162514264337593543950335 然而,我甚至没有接近最大28位数字 我提交了一个我认为是的bug。。。但我不敢相信这会是个大问题 这是设计的 你是这样规定的吗 79,228,162,514

如果我在SQL 2008 R2中有一个表,其中有一个类型为Decimal(35,18)的可空列,并将其拉入edmx。在不出现转换溢出错误的情况下,我可以成功保存到DB的最大十进制值是

79228162514

这是非常奇怪的,因为它与十进制的上限相匹配(如果您比较的数字不是实际值)

79228162514264337593543950335

然而,我甚至没有接近最大28位数字

我提交了一个我认为是的bug。。。但我不敢相信这会是个大问题

这是设计的

你是这样规定的吗 79,228,162,514 被解释和存储为 79228162514000000000000x10^-18

如果再增加整数部分,它将大于CLR decimal MaxValue
79228162514264337593543950335

在这个问题上想得更多一些。实际发生的情况似乎是,如果您将decimal.MaxValue设置为79228162514264337593543950335,并将其设置为字符串,则会使用。子字符串(0,28-刻度)将是使用的最大值,因此,如果在DB中,您的刻度为18,则将是MaxValue=“79228162514264337593543950335”。子字符串(0,28-刻度)正如安德烈所说,这是设计的,是你理解它如何工作的一个缺陷。这就是为什么您可能不应该提交错误报告,除非您确定它是一个错误。因此,现在您已经为项目经理和测试人员创建了额外的工作,他们必须弄清楚这根本不是一个bug。