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

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

Susan Sarandon
リリース: 2025-01-21 23:46:15
オリジナル
250 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート