强制EF保存指定的小数位数
本文关键字:小数 EF 保存 强制 | 更新日期: 2023-09-27 17:59:54
我在实体中定义了一些decimal
属性:
public class Entity1
{
public int Id { get; set; }
public decimal Value {get; set;}
}
因为我想为我的小数保存最多4个小数位数,所以在我定义的配置文件中:
this.Property(t => t.Value).HasPrecision(18, 4);
所以结果是在我的CCD_ 3表中有4位小数的Value
字段。
如何强制EF
只保存Value
值中使用的小数位数?
例如:
- 如果值=0.05,则保存0.05,当我从Db读取值时,它显示0.05而不是0.0500
- 如果值=0.050,则保存0.050
- 如果值=0.05000,则保存0.0500(因为最大小数位数为4)
换句话说,我希望EF
保存最终用户在Value
中指定的小数位数。
由于您关心的是以输入数字的方式显示数字,而不是出于数学原因而保留精确的精度,因此您有几个选项。
我假设您实际上需要数据库中的值为数字,以便进行查询或计算。否则,您可以将其另存为字符串。
您可以保存第二个值,表示输入值的精度,并使用它为您的值创建一个格式字符串:
public decimal Value { get; set; }
public byte ValuePrecision { get; set; }
public string FormatValue()
{
string fmtString = string.Format("{{0:N{0}}}", this.ValuePrecision);
return string.Format(fmtString, this.Value);
}
免责声明:代码是从内存中完成的,尚未经过测试。