SaveChanges上的十进制值错误

时间:2014-08-06 15:37:59

标签: c# asp.net-mvc savechanges

我需要将从表单中获取的值存储到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

关于它为什么要这样做以及如何解决的任何想法?

1 个答案:

答案 0 :(得分:0)

如果你想坚持decimal(4,0)这实际上是一个整数,你还应该将变量DECIMAL_VALUE的类型更改为项类中的真整数。

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

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