Tinyint (byte), SmallInt (Int16) não compatível com Enum no EF5
Usando o primeiro design do banco de dados e tendo a coluna tinyint (ou smallint):
[MyEnumColumn] [tinyint] NOT NULL
Eu mapeei esta coluna para Enum Type em EDM com
External Type: NSpace.MyEnumType
Name:MyEnumType
UnderlyingType:Byte
Onde NSpace.MyEnumType é definido assim:
public enum MyEnumType
{ One, Two, Three, All }
Apenas para obter esse erro ao tentar carregar a entidade do contexto:
Esquema especificado não é válido. Erros:
Nenhum tipo de camada de objeto correspondente pode ser encontrado para o tipo conceitual 'EntityDataModel.MyEnumType'.
As informações a seguir podem ser úteis para resolver o erro anterior:
O tipo subjacente do tipo de enumeração CLR não corresponde ao tipo subjacente do tipo de enumeração EDM.
O mesmo se aplica se eu usar [Smallint] e [Int16], mas depois que eu mudar o banco de dados para [Int] e o tipo de enum para [Int32] o erro desaparecer.
Por que preciso armazenar o valor enum no campo de dados 4Byte (Int) em vez de 1Byte (Tinyint) quando as enums em 99,9% não têm mais de 256 itens ou estou faltando alguma outra coisa?