ホームページ >バックエンド開発 >C++ >まずEFコードで10進数値の精度と位取りを制御するにはどうすればよいですか?

まずEFコードで10進数値の精度と位取りを制御するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-21 23:46:15337ブラウズ

How to Control Precision and Scale of Decimal Values in EF Code First?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。