Tinyint (Byte), SmallInt (Int16) nicht kompatibel mit Enum in EF5
Verwenden des Datenbankentwurfs und der Spalte tinyint (oder smallint):
[MyEnumColumn] [tinyint] NOT NULL
Ich habe diese Spalte Enum Type in EDM mit zugeordnet
External Type: NSpace.MyEnumType
Name:MyEnumType
UnderlyingType:Byte
Wobei NSpace.MyEnumType wie folgt definiert ist:
public enum MyEnumType
{ One, Two, Three, All }
Nur um diesen Fehler zu erhalten, wenn versucht wird, eine Entität aus dem Kontext zu laden:
Das angegebene Schema ist ungültig. Fehler:
Für den konzeptionellen Typ 'EntityDataModel.MyEnumType' konnte kein entsprechender Objektlayertyp gefunden werden.
Die folgenden Informationen können zur Behebung des vorherigen Fehlers hilfreich sein:
Der zugrunde liegende Typ des CLR-Aufzählungstyps stimmt nicht mit dem zugrunde liegenden Typ des EDM-Aufzählungstyps überein.
Gleiches gilt, wenn ich [Smallint] und [Int16] verwende, aber wenn ich die Datenbank auf [Int] und den Aufzählungstyp auf [Int32] ändere, ist der Fehler behoben.
Warum muss ich den Aufzählungswert im 4-Byte-Datenfeld (Int) anstelle von 1-Byte-Datenfeld (Tinyint) speichern, wenn die Aufzählungen in 99,9% der Zeit nicht mehr als 256 Elemente enthalten oder ich etwas anderes vermisse?