Tinyint (byte), SmallInt (Int16) no es compatible con Enum en EF5
Usando el primer diseño de la base de datos y teniendo una columna diminuta (o pequeña):
[MyEnumColumn] [tinyint] NOT NULL
Asigné esta columna a Enum Type en EDM con
External Type: NSpace.MyEnumType
Name:MyEnumType
UnderlyingType:Byte
Donde NSpace.MyEnumType se define así:
public enum MyEnumType
{ One, Two, Three, All }
Solo para obtener este error al intentar cargar la entidad desde el contexto:
El esquema especificado no es válido. Errores:
No se pudo encontrar ningún tipo de capa de objeto correspondiente para el tipo conceptual 'EntityDataModel.MyEnumType'.
La siguiente información puede ser útil para resolver el error anterior:
El tipo subyacente del tipo de enumeración CLR no coincide con el tipo subyacente del tipo de enumeración EDM.
Lo mismo se aplica si uso [Smallint] e [Int16] pero una vez que cambie la base de datos a [Int] y el tipo de enumeración a [Int32] el error desaparece.
¿Por qué necesito almacenar el valor de enumeración en el campo de datos 4Byte (Int) en lugar de 1Byte (Tinyint) cuando las enumeraciones en el 99.9% del tiempo no tienen más de 256 elementos o me falta algo más?