Entity Framework 6 Code First - Required Enum data type not working
Can you do it this way:
public class TestEnumClass
{
[Key]
public int id { get; set; }
[Required(ErrorMessage = "Required"), Display(Name = "Test Enum")]
public TestEnum? test{ get; set; }
}
That is, define "test" to be nullable, but then mark it [Required] to force it to have a value.
Similar discussion related to ints here.
Use 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; }
}
This is because of how Enum types are handled in .NET. If you do not provide a value, it is effectively the same as if value 0 was assigned. If your enum has the value of 0 defined then the correct value is assigned to enum variable. If the value is not assigned - it still assigns value of 0 but it fails when you try to use it because it cannot convert the int to the correct enum value.
In your case I suggest if it is possible to add a value of 0 and assign it to a specific value or assign value of Default, Null or something similar to your enum, e.g.
public enum TestEnum {
NotSet = 0,
test1 = 1,
test2 = 2,
test3 = 3,
test4 = 4
}
If you want to validate it then you can compare that value is not equals to 0.