更改十进制默认精度实体框架
本文关键字:实体 框架 精度 默认 十进制 | 更新日期: 2023-09-27 18:17:07
我正在做一个MVC 4架构。net项目。decimal参数的默认精度是(18,2)。我做了一些迁移更改,并将其更改为(18,6)。所以现在数据库存储了小数点后的6位数字范围,但问题是它没有存储有问题的值集。它只选择2位数字,然后把0000加到6。
例如:用户发送45.233222,则数据库中存储的值为45.230000。手动进入数据库工作完全正常。我是这方面的新手…因此,请建议如何更改十进制参数的默认精度,使其在数据库中存储六位数精度。
我所做的迁移更改。
public override void Up()
{
AlterColumn("dbo.TItems", "SubTotal", c => c.Decimal(nullable: false, precision: 18, scale: 6));
AlterColumn("dbo.TItems", "UnitPrice", c => c.Decimal(nullable: false, precision: 18, scale: 6));
}
public override void Down()
{
AlterColumn("dbo.TItems", "SubTotal", c => c.Decimal(nullable: false, precision: 18, scale: 2));
AlterColumn("dbo.TItems", "UnitPrice", c => c.Decimal(nullable: false, precision: 18, scale: 2));
}
我知道这是旧的,但我总是假设十进制(在实体框架迁移中)用于货币。因此,精度是在模型上设定的,而不是在迁移级别上。对数据库使用double,如果需要的话使用float,然后根据需要进行强制类型转换。