C#实体框架-十进制错误
本文关键字:十进制 错误 框架 实体 | 更新日期: 2023-09-27 18:28:19
尝试执行此代码:
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:中指定属性的精度
modelBuilder.Entity<POPManagerPreparation>()
.Property(e => e.JudgementPercentage)
.HasPrecision(10,5);
我像Pankaj Gupta建议的那样,通过更改为浮点字段来解决这个问题。这很好用。
所以我已经学会了不要使用十进制,除非你确信这个值严格按照它所期望的十进制形式。