繁体   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