1
在我的代码优先实体框架sql数据库我有一个十进制值指定为18,3。 数据库对象:实体框架6十进制精度
public decimal? Kolhalt { get; set; }
在OnModelCreating我有
modelBuilder.Entity<Skada>().Property(o => o.Kolhalt).HasPrecision(18, 3);
在值被指定为Kolhalt数据库(十进制(18,3),空)
如果我输入值直接在数据库中我得到三位小数,但是当我用EntityFramework插入或更新一个值时,它被截断为2位小数。
与SQL Server探查我可以看到,EF指定2位小数的存储值:
[Kolhalt] = @14 ... @14 decimal(18,2) ... @14=5.12
(输入值是5.123)。
因此,由于某些原因,当我调用SaveChanges()时,EF会截断发送到数据库的值。
是否必须指定小数的位数才能在SaveChanges()中正确使用?
最好的问候, 亨里克
嗨,这节省了我的一天。 TruncateDecimalsToScale = false解决了这个问题。我想我昨天确实尝试了这个,但一定是犯了一些错误。我试图提出你的答案,但我没有足够的声誉来显示。 – Henrik
你能否提供更多关于你如何将它分配给你使用的上下文的细节? – Andrew
请参阅[这里](https://msdn.microsoft.com/en-us/library/jj680699(v = vs.113).aspx)。我只是将它作为上下文的相同文件夹中的一个类添加。 –