C# Entity FrameWork - 十进制错误

C# Entity FrameWork - Decimal error

正在尝试执行此代码:

process.POPManagerPreparation.JudgementPercentage = (decimal?)txtAlternativePercentage.Value;

工作正常,但是当执行代码 Context.Current.SaveChanges(); 将其保存在数据库中时,会发生此 ArgumentException:

An error occurred while updating the entries. See the inner exception for details.
System.ArgumentException: Parameter value '3,0000' is out of range.

这绝对是关于我添加的字段,我知道是因为它的价值。 (当我检查其他输入时它会改变)

我试过把我的电脑设置从NL-nl改成US-en,感觉好像有问题但是没有解决,还是一样的错误。

也在文本字段上尝试了一些东西,仍然是同样的错误:

    <telerik:RadNumericTextBox MinValue="0" MaxLength="100" ID="txtAlternativePercentage"
     runat="server" Type="Percent" Culture="en-US" Width="80px" LabelCssClass=""
     Label="Verhogingspercentage:" LabelWidth="130" AutoPostBack="true"
     OnTextChanged="SalaryChanged" Visible="false">
             <NumberFormat DecimalDigits="1" />
             <IncrementSettings InterceptArrowKeys="False" InterceptMouseWheel="False" />
    </telerik:RadNumericTextBox>

为了完整起见,数据库字段是:decimal(10, 5) 所以这似乎也没问题。在网上发现了很多关于使用太小字段的人的问题,但我的问题没有。

您可以在模型构建器中指定属性的精度:

modelBuilder.Entity<POPManagerPreparation>()
            .Property(e => e.JudgementPercentage)
            .HasPrecision(10,5);

我通过像 Pankaj Gupta 建议的那样更改为浮动字段来解决它。这很好用。

所以我学会了不使用小数,除非您确定该值对其期望的小数形式严格。