发布后插入时的实体框架小数问题



我有一个名为Gold的数据模型,它具有如下黄金价格的十进制属性:

public class Gold
{
[key]
public int GoldId { get; set; }
public decimal RateValue { get; set; }
}

我知道EF十进制默认精度和小数位数是(18,2(,这对我来说已经足够了。我不想更改它,在localhost上插入十进制值也没有任何问题。但在主机上发布我的网站后,当我尝试插入1210.40这样的小数时,它不会插入,有时它会在数据库中插入1210.00(小数位数错误(,不会有任何错误!

我完全困惑了,因为我在本地运行代码时没有这个问题。没有点数字右边的1210这样的小数没有问题!!!

这是我插入十进制的代码:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include="RateValue")]Gold manualPrices)
{
Gold ons = new Gold() {RateValue=(decimal)manualPrices.RateValue,};
db.GoldRepository.Insert(ons);
db.Save();
}

Razor代码:

@Html.EditorFor(model => model.RateValue, new { htmlAttributes = new { @class = "form-control" } })

更多信息:我使用的是MVC.Net Framework 4.5.2,代码优先,工作单元,MS SQL 2016。

感谢@StephenMuecke和@heuristic

在全球范围内,文化已经转变为波斯文化。这会影响用于小数分隔符的字符,从句点(.(到斜线(/(,因此以句点作为分隔符的小数甚至不会绑定。

代码中没有任何更改。只需键入1210/40之类的小数,而不是1210.40作为insert。问题解决了。

最新更新