1. ホーム
  2. c#

[解決済み】EF Code Firstの小数点以下の精度・目盛について

2022-04-16 03:38:13

質問

私はこのコードファーストのアプローチで実験していますが、私は今、System.Decimal型のプロパティがdecimal(18、0)型のSQL列にマッピングされることを発見しています。

データベースのカラムの精度はどのように設定するのですか?

どのように解決するのですか?

Dave Van den Eyndeの回答はもう古くなっています。 2つの重要な変更があります。EF 4.1以降では、ModelBuilderクラスが DbModelBuilder というシグネチャを持つ DecimalPropertyConfiguration.HasPrecision メソッドが存在するようになりました。

public DecimalPropertyConfiguration HasPrecision(
byte precision,
byte scale )

ここで、precisionは小数点以下の桁数に関係なく、dbが保存する総桁数で、scaleは保存する小数点以下の桁数です。

したがって、このようにプロパティを繰り返し実行する必要はなく、単に

public class EFDbContext : DbContext
{
   protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
   {
       modelBuilder.Entity<Class>().Property(object => object.property).HasPrecision(12, 10);

       base.OnModelCreating(modelBuilder);
   }
}