保存添加额外的小数位

本文关键字:小数 添加 保存 | 更新日期: 2023-09-27 18:31:29

我有一个定义为十进制(9,9)的数据库字段。C# 中的 edmx 模型将此字段映射到精度和小数位数为 9 的十进制变量。

我把数字 5 放在变量中。 我可以检查的任何地方都显示值为 5(在局部变量、实体类实例、数据上下文等中)。

DataContex.SaveChanges()时,该值将转换为"5.000000000"。 尽我所能,实体框架在尝试保存到数据库之前向值添加了 9 位小数。 这会导致错误,因为该值现在包含太多数字。

有谁知道导致这种行为的原因以及我如何改变它?

附加信息 - 我首先在 SQL 2008 R2 中创建数据库Microsoft。 然后,我从数据库生成了实体框架模型。

保存添加额外的小数位

如果您确实在数据库中将数据类型定义为decimal(9,9),那么您就有问题了。
根据Microsoft,第一个数字是总位数,第二个是小数点右侧的位数。
因此,您实际上只能在这样的字段中以 .123456789 格式存储小于 1 的数字。如果需要存储 5,则需要不同的格式。

这不是特定于实体框架的,而是对于精度定义为 9 的小数(映射回数据库)的预期值。因此,当您输入 5 时,由于定义数据的方式,将在小数点后添加 0。

这是在 .NET 1.1 中实施的,以符合标准(我忘记了是哪一个)。出于显示目的,您始终可以使用 Math.Round 删除精度级别(或根据实际需要以不同的方式定义数据)。