簡體   English   中英

C#實體框架-十進制錯誤

[英]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中指定屬性的精度:

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

我通過改成Pankaj Gupta建議的浮點字段來解決它。 這很好。

因此,我已經學會了不要使用小數,除非您確定該值對於期望的小數形式嚴格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM