sql-server 实体框架在更新表时截断小数位

eh57zj3b  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(202)

我有一个包含decimal(18, 3)列的表,该表Map到一个包含相应decimal属性的类。
我将该属性的值更改为(例如0.035),这是EF生成的用于更新列的命令:

exec sp_executesql N'UPDATE [dbo].[mytable]
SET [mycolumn] = @0
WHERE ([id] = @1)
',N'@0 decimal(18,2),@1 int',@0=3,@1=3

我需要的规模,以达到3个小数位(这是我正在做的),但它得到截断为2 upadte。
为什么会发生这种情况,我该如何解决这个问题?

bbuxkriu

bbuxkriu1#

您可以呼叫HasColumnType("decimal(18,3)"),或避免在OnModelCreating()方法中呼叫HasColumnType(),其中您是以下列方式设定每个属性:

entity.Property(e => e.mycolumn)
    .HasColumnType("decimal")
    .HasDefaultValueSql("00.000");

默认情况下,EF使用2的比例。

相关问题