SaveChanges上的十进制值错误

本文关键字:错误 十进制 SaveChanges | 更新日期: 2023-09-27 18:16:37

我需要将从表单中获取的值存储到一个decimal(4,0)列中。

首先(在控制器中)我从表单中获取值并将其从字符串转换为十进制并将其乘以100这样我就可以保留所需的值

//"12.34" --> (12.34)*100 --> 1234
item.DECIMAL_VALUE = decimal.Parse(view.decimal_value) * 100;

我在调试模式下检查:item.DECIMAL_VALUE的值实际上是一个小数,它的值是1234(如预期的)。

继续代码,我需要将值保存到数据库

_context.TABLE.Add(item);
return _context.SaveChanges();

这就是问题所在。我得到一个DbUpdateException,因为它试图保存1234,00(不对应于decimal(4,0))而不是1234

你知道为什么会这样吗?怎么解决?

SaveChanges上的十进制值错误

如果你想坚持使用decimal(4,0),它实际上是一个整数,你也应该在item类中将变量DECIMAL_VALUE的类型更改为一个真正的整数。

之后,为了避免潜在的重输入问题,您还应该在赋值时使用显式重输入…

item.DECIMAL_VALUE = (int)(decimal.Parse(view.decimal_value) * 100);