EF Code First の 10 進数の精度とスケール 質問する

EF Code First の 10 進数の精度とスケール 質問する

私はこのコードファーストのアプローチを試していますが、System.Decimal 型のプロパティが、decimal(18, 0) 型の SQL 列にマップされることがわかりました。

データベース列の精度を設定するにはどうすればよいですか?

ベストアンサー1

Dave Van den Eyndeの回答は古くなっています。2つの重要な変更点があります。EF 4.1以降、ModelBuilderクラスはDbモデルビルダーそして、次のシグネチャを持つ DecimalPropertyConfiguration.HasPrecision メソッドが存在します。

public DecimalPropertyConfiguration HasPrecision(
byte precision,
byte 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);
   }
}

おすすめ記事