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)。我只是將它作爲上下文的相同文件夾中的一個類添加。 –