ホームページ > バックエンド開発 > C++ > EF Core コードファースト移行で小数精度とスケールを制御するにはどうすればよいですか?

EF Core コードファースト移行で小数精度とスケールを制御するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-21 23:36:11
オリジナル
727 人が閲覧しました

How Do I Control Decimal Precision and Scale in EF Core Code-First Migrations?

EF Core のコードファースト移行における小数精度と位取りについて理解する

Entity Framework Core のコードファーストアプローチでは、10 進プロパティをデータベース列にマッピングするときに慎重な考慮が必要です。 SQL Server のデフォルトのマッピングは decimal(18, 0) ですが、多くの場合、特定のデータ要件に合わせて精度とスケールをカスタマイズする必要があります。

精度とスケールの定義

10 進数列の精度と位取りを制御するには、HasPrecision クラス内の DecimalPropertyConfiguration メソッドを利用します。 このメソッドは、precision (合計桁数) と scale (小数点以下の桁数) の 2 つの引数を受け入れます。

例:

<code class="language-csharp">public class EFDbContext : DbContext
{
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<MyClass>().Property(e => e.MyDecimalProperty).HasPrecision(12, 10);

        base.OnModelCreating(modelBuilder);
    }
}</code>
ログイン後にコピー

このコード スニペットでは、MyDecimalProperty は精度 12、スケール 10 で構成されており、小数点以下 10 桁の合計 12 桁が可能です。

重要な考慮事項:

  • HasPrecision メソッドは、古い EF バージョン (EF 4.1 など) ではサポートされていません。 これらのバージョンの場合は、以下に示すように HasColumnType メソッドを使用します。

    <code class="language-csharp">  modelBuilder.Entity<MyClass>().Property(e => e.MyDecimalProperty).HasColumnType("decimal(12, 10)");</code>
    ログイン後にコピー
  • precision は全体の桁数を表し、scale は特に小数点以下の桁を指します。

以上がEF Core コードファースト移行で小数精度とスケールを制御するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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