EF コードファーストによる小数精度とスケールの管理
Entity Framework (EF) Code First は、デフォルトで System.Decimal
プロパティを SQL Server decimal(18, 0)
列にマッピングします。 このデフォルトは、特にアプリケーションでより高い精度や小数点以下の桁数が必要な場合には、常に理想的であるとは限りません。幸いなことに、EF API は、このマッピングをカスタマイズする簡単な方法を提供します。
精度とスケールの構成
EF 4.1 より前は、開発者は通常、HasColumnType
メソッドを使用してモデルの反復ループ内で列のプロパティを調整していました。 例:
<code class="language-csharp">foreach (var property in modelBuilder.Properties.Where(p => p.ClrType == typeof(decimal))) { property.HasColumnType($"decimal({property.Precision}, {property.Scale})"); }</code>
ただし、EF 4.1 以降のバージョンでは、HasPrecision
メソッドを使用したより合理化されたアプローチが提供されます。 このメソッドは DecimalPropertyConfiguration
の一部であり、精度とスケールを直接設定します。
HasPrecision
の使用方法は次のとおりです:
<code class="language-csharp">modelBuilder.Entity<MyClass>().Property(o => o.MyDecimalProperty).HasPrecision(12, 10);</code>
このコードは、MyDecimalProperty
エンティティ内の MyClass
プロパティに対して精度 12、スケール 10 の SQL Server 列を作成します。
この方法では、データベース内の 10 進数のストレージを正確に制御できるため、EF Code First アプリケーションでの正確で信頼性の高いデータ処理が保証されます。
以上がまずEFコードで10進数値の精度と位取りを制御するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。