更改十进制默认精度实体框架

时间:2013-06-06 11:49:17

标签: c# .net entity-framework asp.net-mvc-4

我正在研究MVC 4架构.net项目。十进制参数的默认精度为(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));
        }

1 个答案:

答案 0 :(得分:0)

我知道这很老了,但我一直假设十进制数(在实体框架迁移中)用于赚钱。因此,精度是在模型上设置的,而不是在迁移级别上设置的。对数据库使用double,如果需要,可以使用float,然后根据需要进行转换。