Tinyint (байт), SmallInt (Int16) не совместим с Enum в EF5
Используя первый дизайн базы данных и имея столбец tinyint (или smallint):
[MyEnumColumn] [tinyint] NOT NULL
Я сопоставил этот столбец с Enum Type в EDM с
External Type: NSpace.MyEnumType
Name:MyEnumType
UnderlyingType:Byte
Где NSpace.MyEnumType определяется так:
public enum MyEnumType
{ One, Two, Three, All }
Только чтобы получить эту ошибку при попытке загрузить сущность из контекста:
Указанная схема недействительна. Ошибки:
Не удалось найти соответствующий тип слоя объекта для концептуального типа EntityDataModel.MyEnumType.
Следующая информация может быть полезна при устранении предыдущей ошибки:
Базовый тип типа перечисления CLR не соответствует базовому типу типа перечисления EDM.
То же самое применимо, если я использую [Smallint] и [Int16], но как только я изменяю базу данных на [Int] и тип enum на [Int32], ошибка исчезает.
Почему мне нужно хранить значение перечисления в поле данных 4Byte (Int) вместо 1Byte (Tinyint), если в перечислениях за 99,9% времени не более 256 элементов или я что-то упустил?