1

私は MVC 4 アーキテクチャ .net プロジェクトに取り組んでいます。decimal パラメータのデフォルトの精度は (18,2) です。いくつかの移行変更を行い、(18,6) に変更しました。そのため、データベースは小数点以下6桁のスケール範囲を保存しますが、問題は設定された値を問題なく保存していないことです。2 桁のみを選択し、残りの 0000 を 6 まで追加します。

たとえば、ユーザーが 45.233222 を送信した場合、データベースに保存される値は 45.230000 です。データベースへの手動入力は完全に正常に機能します。私はこのことに取り組んでいる初心者です...だから、データベースに6桁の精度で格納されるように、10進数パラメータのデフォルトの精度を変更する方法を提案してください。

私が行った移行の変更。

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));
        }
4

1 に答える 1

0

これが古いことは知っていますが、(エンティティ フレームワークの移行では) 10 進数がお金に使用されると常に想定していました。したがって、精度は移行レベルではなく、モデルで設定されます。データベースには double を使用し、必要に応じて float を使用してから、必要に応じてキャストします。

于 2019-07-02T21:53:08.160 に答える