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