簡體   English   中英

實體框架中需要的十進制字段

[英]Decimal field required in Entity Framework

我有一個簡單的asp.net mvc c#應用程序,我首先使用EF代碼。

我有一個類“學生”,它具有十進制類型的屬性和其他類型為int的屬性。 我不介意為什么在沒有任何數據注釋的情況下,decimal屬性不會為null?

另一個問題是,當我運行我的應用程序時,帶有decimal屬性的文本框檢索值170,6但是當我提交它時,它顯示一個錯誤,表示170,6不是有效值,我必須更改它到170.6能夠提交。

public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public DateTime? DateOfBirth { get; set; }
    public byte[] Photo { get; set; }
    public decimal Height { get; set; }
    public int Weight { get; set; }
    public int changement { get; set; }

    public Grade Grade { get; set; }

}
public class Grade
{
    public int GradeId { get; set; }
    public string GradeName { get; set; }
    public string Section { get; set; }

    public ICollection<Student> Students { get; set; }
}

我不明白為什么沒有任何數據注釋,decimal屬性將不為null

C#中的decimal是值類型。 它根本不能為null 與例如intdoubleDateTime

170,6不是有效值,我必須將其更改為170.6才能提交。

這是文化/地區的常見問題。 我正在尋找關於這個主題的一個很好的重復問題,給出一個如何解決這個問題的有用鏈接。

這有點棘手,因為MVC必須生成在客戶端允許提交的驗證代碼,並且客戶端可以配置另一種文化。

編輯:你可以看看這個問題,它是公認的答案: MVC / JQuery驗證不接受逗號作為小數點分隔符

對於第一個問題, decimal是值類型,並且永遠不能為null。 如果您希望它為null,您應該將其定義為decimal? (這是Nullable<decimal>引用類型包裝器的快捷方式)。 確保數據庫中的相應字段也為NULL

對於第二個問題,您應該確保您的請求線程與您的客戶端具有相同的文化。 有很多方法可以做到這一點,嘗試查看這個網站或谷歌。

暫無
暫無

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

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