Breeze - 保存小数类型的比例有误吗?
Breeze - Saving decimal type has wrong scale?
我使用最新的 Breezejs (1.5.3) 在 sql 服务器中使用 Entity Framework 进行数据操作。保存操作成功完成。 savemap 具有全刻度的十进制值,但更新后 DB 中的字段具有错误的刻度(小数点数)。
例如,savemap 的值 565.13435435 将保留在 db 字段 decimal(19,5) 中,但更新后该字段有 2 个小数点
这是一个 EF 问题。 EF 中 decimal
类型的默认比例是 2。您必须告诉 EF 您的列的比例是多少。如果你只需要 4 位小数,你可以通过说它是一种货币类型来使用快捷方式:
[Column(TypeName = "Money")]
public decimal MyDecimalValue { get; set; }
但对于所有其他情况,您需要在 DbContext
的 OnModelCreating
方法中指定精度:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// configure the precision to match what is specified in the database
modelBuilder.Entity<MyEntity>().Property(p => p.MyDecimalValue).HasPrecision(19, 5);
}
我使用最新的 Breezejs (1.5.3) 在 sql 服务器中使用 Entity Framework 进行数据操作。保存操作成功完成。 savemap 具有全刻度的十进制值,但更新后 DB 中的字段具有错误的刻度(小数点数)。
例如,savemap 的值 565.13435435 将保留在 db 字段 decimal(19,5) 中,但更新后该字段有 2 个小数点
这是一个 EF 问题。 EF 中 decimal
类型的默认比例是 2。您必须告诉 EF 您的列的比例是多少。如果你只需要 4 位小数,你可以通过说它是一种货币类型来使用快捷方式:
[Column(TypeName = "Money")]
public decimal MyDecimalValue { get; set; }
但对于所有其他情况,您需要在 DbContext
的 OnModelCreating
方法中指定精度:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// configure the precision to match what is specified in the database
modelBuilder.Entity<MyEntity>().Property(p => p.MyDecimalValue).HasPrecision(19, 5);
}