我遇到过应用程序中最疯狂的行为。我正在使用EF 6并且具有带小数属性的模型,数据库类型供电是小数(18,4)。如果我将小数值从0.6500更改为0.6550并在上下文中保存更改,则不会更新该行。如果我将其从0.6500更改为0.1350并保存更改,则该行将更新但该值将保存为0.1300,因此它已丢失0.005。我知道数据库可以保存当前对某些手动插入数据的精度,而EF可以毫无问题地检索它。
我需要做什么才能让EF更新我的行/维护精度。非常感谢,我可能会哭。
答案 0 :(得分:3)
所以我在离开问题一段时间后找到了我自己的问题的答案。似乎小数的EF默认精度为2,我可以自己覆盖它并将其设置为4,如我所愿。我从之前回答的问题中偷走了代码:
Set decimal(16, 3) for a column in Code First Approach in EF4.3
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<MyClass>().Property(x => x.SnachCount).HasPrecision(16, 3);
modelBuilder.Entity<MyClass>().Property(x => x.MinimumStock).HasPrecision(16, 3);
modelBuilder.Entity<MyClass>().Property(x => x.MaximumStock).HasPrecision(16, 3);
}