如何在实体框架代码优先迁移中设置小数精度和小数位数

Mik*_*art 2 c# entity-framework ef-migrations

我正在使用实体框架迁移,并且需要设置实体中十进制属性的精度和小数位数。我只想对此单个十进制属性(而不是所有十进制属性)执行此操作。我已经重写了OnModelCreating方法,以默认将小数设置为(18,2)。我需要此属性为(22,5)。例如

public class AdditionalCharge
{
  public decimal? Rate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在数据库中被创建为“十进制(18,2)NULL”列。我需要它成为“十进制(22,5)NULL”列。

我可以创建一个空迁移并手动编码更改,

public override void Up()
{
  AlterColumn("dbo.AdditionalCharge", "Rate", c => c.Decimal(nullable: true, precision: 22, scale: 5));
}
Run Code Online (Sandbox Code Playgroud)

但是我只想更改C#声明,然后让迁移创建更改。

有没有办法做到这一点?

麦克风

D S*_*ley 5

您还可以设置列的精度OnModelCreating

modelBuilder.Entity<AdditionalCharge>().Property(o => o.Rate ).HasPrecision(22, 5);
Run Code Online (Sandbox Code Playgroud)

但是我不知道更改是否会在迁移中进行。