[英]Entity Framework 6 Code First - Required Enum data type not working
我正在使用必需的枚举字段生成数据库表。 但是,在提供表时,可以省略提供枚举字段:EF不会抛出任何错误消息,但将向字段提供0值。 您能帮我了解发生了什么吗? 谢谢
public enum TestEnum {
test1=1,
test2=2,
test3=3,
test4=4
}
public class TestEnumClass
{
[Key]
public int id { get; set; }
[Required(ErrorMessage = "Required"), Display(Name = "Test Enum")]
public TestEnum test{ get; set; }
}
使用RangeAttribute
:
public enum TestEnum
{
test1 = 1,
test2 = 2,
test3 = 3,
test4 = 4
}
public class TestEnumClass
{
[Key]
public int id { get; set; }
[Range(1, 4), Display(Name = "Test Enum")]
public TestEnum test{ get; set; }
}
这是因为在.NET中如何处理Enum类型。 如果不提供值,则实际上与分配值0相同。 如果您的枚举值已定义为0,则将正确的值分配给枚举变量。 如果未分配该值-它仍会分配值0,但在尝试使用它时会失败,因为它无法将int转换为正确的枚举值。
在您的情况下,我建议是否可以添加0值并将其分配给特定值或分配Default,Null或类似于您的枚举的值,例如
public enum TestEnum {
NotSet = 0,
test1 = 1,
test2 = 2,
test3 = 3,
test4 = 4
}
如果要验证它,则可以比较该值不等于0。
你能这样吗:
public class TestEnumClass
{
[Key]
public int id { get; set; }
[Required(ErrorMessage = "Required"), Display(Name = "Test Enum")]
public TestEnum? test{ get; set; }
}
也就是说,将“ test”定义为可为空,然后将其标记为[Required]以强制其具有值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.