Tinyint (bajt), SmallInt (Int16) niezgodny z Enum w EF5

Korzystanie z pierwszego projektu bazy danych i kolumny tinyint (lub smallint):

[MyEnumColumn] [tinyint] NOT NULL

Mapowałem tę kolumnę na Enum Type w EDM za pomocą

External Type: NSpace.MyEnumType
Name:MyEnumType
UnderlyingType:Byte

Gdzie NSpace.MyEnumType jest zdefiniowany tak:

public enum MyEnumType 
{ One, Two, Three, All }

Tylko po to, aby uzyskać ten błąd podczas próby załadowania elementu z kontekstu:

Określony schemat jest nieprawidłowy. Błędy:

Nie znaleziono odpowiedniego typu warstwy obiektu dla typu koncepcyjnego „EntityDataModel.MyEnumType”.

Poniższe informacje mogą być przydatne w rozwiązaniu poprzedniego błędu:

Podstawowy typ typu wyliczania CLR nie jest zgodny z typem bazowym typu wyliczania EDM.

To samo dotyczy sytuacji, gdy używam [Smallint] i [Int16], ale gdy zmienię bazę danych na [Int] i typ wyliczeniowy na [Int32], błąd zniknie.

Dlaczego muszę przechowywać wartość wyliczoną w polu danych 4Byte (Int) zamiast 1Byte (Tinyint), gdy wyliczenia w czasie 99,9% nie mają więcej niż 256 elementów lub czy brakuje mi czegoś innego?

questionAnswers(1)

yourAnswerToTheQuestion