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
你知道为什么会这样吗?怎么解决?
如果你想坚持使用decimal(4,0)
,它实际上是一个整数,你也应该在item类中将变量DECIMAL_VALUE
的类型更改为一个真正的整数。
之后,为了避免潜在的重输入问题,您还应该在赋值时使用显式重输入…
item.DECIMAL_VALUE = (int)(decimal.Parse(view.decimal_value) * 100);