EF コードファーストで 10 進数の精度とスケールを微調整する
Entity Framework (EF) Code First は、SQL Server にマッピングするときに、decimal(18, 0)
プロパティに対してデフォルトで System.Decimal
を使用します。 ただし、多くの場合、精度とスケールをより詳細に制御する必要があります。 直接の EntityPropertyConfiguration
操作を伴う古いメソッドは廃止され、EF 4.1 以降のより合理化されたアプローチに置き換えられました。
DecimalPropertyConfiguration.HasPrecision
DecimalPropertyConfiguration
クラスは、正確な制御のための HasPrecision
メソッドを提供します。 その構文は次のとおりです:
<code class="language-csharp">public DecimalPropertyConfiguration HasPrecision(byte precision, byte scale)</code>
precision
: 合計桁数 (小数点の前後)。scale
: 小数点以下の桁数。実践例: 精度とスケールの設定
DbContext
クラスの OnModelCreating
メソッド内で、精度と位取りを指定できます。
<code class="language-csharp">public class EFDbContext : DbContext { protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<MyClass>().Property(e => e.MyDecimalProperty).HasPrecision(12, 10); base.OnModelCreating(modelBuilder); } }</code>
これは、MyDecimalProperty
エンティティの decimal
(型 MyClass
) を SQL Server decimal(12, 10)
列にマップします。 これにより、データベースには小数点以下 10 桁までの最大 12 桁の数値が保存されます。
以上がEF コードファーストで 10 進プロパティの精度とスケールを制御するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。