c# - property - Entity Framework 6 Code First-El tipo de datos Enum Requerido no funciona
enum entity framework database first (2)
Esto se debe a cómo se manejan los tipos Enum en .NET. Si no proporciona un valor, en realidad es el mismo que si se asignara el valor 0. Si su enumeración tiene el valor de 0 definido, entonces el valor correcto se asigna a la variable enum. Si el valor no está asignado, aún asigna un valor de 0, pero falla cuando intenta usarlo porque no puede convertir el int al valor de enumeración correcto.
En su caso, sugiero si es posible agregar un valor de 0 y asignarlo a un valor específico o asignar un valor de Predeterminado, Nulo o algo similar a su enumeración, por ejemplo
public enum TestEnum {
NotSet = 0,
test1 = 1,
test2 = 2,
test3 = 3,
test4 = 4
}
Si desea validarlo, entonces puede comparar que el valor no es igual a 0.
Estoy generando una tabla de base de datos utilizando un campo enum requerido. Sin embargo, al alimentar la tabla, es posible omitir el campo de enumeración: EF no mostrará ningún mensaje de error, sino que alimentará el campo con un valor de 0. ¿Puedes ayudarme a entender lo que está pasando? Gracias
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; }
}
Utilice 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; }
}