TINYINT(字节),SMALLINT(Int16的)与枚举EF5不兼容(Tinyint(byte

2019-08-02 13:45发布

使用数据库的第一个设计和具有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]错误消失。

为什么我需要存储在4字节为(INT)数据字段,而不是1字节(TINYINT)枚举值时在99.9%的时间枚举不超过256个的项目还是我失去了什么东西?

Answer 1:

那么,如果有人有兴趣的问题是枚举的默认类型:

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

由于枚举默认为int类型,[基础类型:{} 字节 ]不匹配[外部类型] {MyEnumType:诠释}的类型,以便解决它,你需要像这样定义你的枚举我原来TINYINT领域:

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


文章来源: Tinyint(byte),SmallInt(Int16) not compatible with Enum in EF5