Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Entity Framework 6 Code First - Required Enum data type not working

Tags:

I am generating a database table using an required enum field. However, when feeding the table, it is possible to omit to feed the enum field: EF will not throw any error message but will feed the field with 0 value. Can you help me understanding what is happening? Thanks

   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; } } 
like image 480
tit Avatar asked Jun 22 '14 10:06

tit


2 Answers

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; } } 
like image 144
Petr Hruzek Avatar answered Sep 25 '22 08:09

Petr Hruzek


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.

like image 23
dotnetom Avatar answered Sep 24 '22 08:09

dotnetom