私はこのコードファーストのアプローチを試していますが、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);
}
}