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