我有一个数据库字段定义为十进制(9,9)。 C#中的edmx模型将此字段映射到精度和标度为9的十进制变量。
我把数字5放在变量中。我可以检查的每个地方都将值显示为5(在局部变量,实体类实例,数据上下文等)。
在DataContex.SaveChanges()
时,该值将转换为“5.000000000”。最好我可以告诉实体框架在尝试保存到数据库之前为该值添加9个小数位。这会导致错误,因为该值现在有太多数字。
有谁知道导致这种行为的原因以及如何更改它?
添加信息 - 我首先在Microsoft SQL 2008 R2中创建数据库。然后,我从数据库中生成了实体框架模型。
答案 0 :(得分:2)
如果您确实在数据库中将数据类型定义为decimal(9,9)
,则表示您遇到了问题
根据{{3}},第一个数字是总位数,第二个数字是小数点右边的位数。
因此,您只能在.123456789
格式的此类字段中存储低于1的数字。
如果您需要存储5,则需要使用不同的格式。
答案 1 :(得分:1)
这不是特定于实体框架,而是预期精度定义为9的十进制(映射回数据库)。因此,当您输入5时,由于数据的定义方式,将在小数点后添加0。
这是在.NET 1.1中实现的,以符合标准(我忘了哪一个)。出于显示目的,您始终可以使用Math.Round来删除精度级别(或者根据实际需要以不同方式定义数据)。