【发布时间】:2015-08-01 18:49:42
【问题描述】:
我正在使用实体框架迁移,需要在实体中设置小数属性的精度和小数位数。我只想为这个单个十进制属性而不是所有十进制属性执行此操作。我已经重写了 OnModelCreating 方法,默认将小数设置为 (18, 2)。我需要这个属性是(22,5)。比如,
public class AdditionalCharge
{
public decimal? Rate { get; set; }
}
在数据库中创建为“十进制 (18,2) NULL”列。我需要它成为“十进制 (22,5) NULL”列。
我可以创建一个空迁移并手动编码更改,
public override void Up()
{
AlterColumn("dbo.AdditionalCharge", "Rate", c => c.Decimal(nullable: true, precision: 22, scale: 5));
}
但我宁愿只更改 C# 声明并让迁移创建更改。
有没有办法做到这一点?
迈克
【问题讨论】:
-
@DStanley 不是 100% 确定这是一个骗局,因为 OP 要求的东西略有不同。在这种情况下,可能无法使用特定的
TypeName添加Column属性。 -
@DavidG 我可能是错的,但似乎
modelBuilder.Entity<AdditionalCharge>().Property(o => o.Rate ).HasPrecision(22, 5);应该设置精度。迁移工具是否会改变只是精度未知,所以我同意重新打开它。 -
@DStanley 是的,我对这个也有两种想法。我要去玩了……
标签: c# entity-framework entity-framework-migrations