使用数据库优先设计并具有 tinyint(或 smallint)列:
[MyEnumColumn] [tinyint] NOT NULL
我将此列映射到 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] 并将枚举类型更改为 [Int32],错误就消失了。
当 99.9% 时间内的枚举不超过 256 个项目或者我缺少其他内容时,为什么我需要将枚举值存储在 4Byte (Int) 数据字段而不是 1Byte (Tinyint) 中?