小编典典

EF Code First中的小数精度和小数位数

c#

我正在尝试这种代码优先的方法,但是现在我发现System.Decimal类型的属性被映射到类型为October(18,0)的sql列。

如何设置数据库列的精度?


阅读 990

收藏
2020-05-19

共1个答案

小编典典

Dave Van den Eynde的答案现在已过时。从EF
4.1开始,有2个重要更改,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);
   }
}
2020-05-19