And*_*cik 24 sqldatatypes entity-framework-5
使用Database first设计并使用tinyint(或smallint)列:
[MyEnumColumn] [tinyint] NOT NULL
Run Code Online (Sandbox Code Playgroud)
我在EDM中将此列映射到枚举类型
External Type: NSpace.MyEnumType
Name:MyEnumType
UnderlyingType:Byte
Run Code Online (Sandbox Code Playgroud)
NSpace.MyEnumType的定义如下:
public enum MyEnumType
{ One, Two, Three, All }
Run Code Online (Sandbox Code Playgroud)
仅在尝试从上下文加载实体时出现此错误:
指定的架构无效.错误:
对于概念类型"EntityDataModel.MyEnumType",找不到对应的对象层类型.
以下信息可能有助于解决以前的错误:
CLR枚举类型的基础类型与EDM枚举类型的基础类型不匹配.
如果我使用[Smallint]和[Int16]同样适用,但是一旦我将数据库更改为[Int]并将枚举类型更改为[Int32],错误就消失了.
当99.9%的时间内的枚举不超过256个项目或者我错过了其他内容时,为什么我需要将枚举值存储在4Byte(Int)数据字段而不是1Byte(Tinyint)中?
And*_*cik 66
好吧,如果有人有兴趣,问题是在枚举的默认类型:
public enum MyEnumType
{ One, Two, Three, All }
Run Code Online (Sandbox Code Playgroud)
由于枚举默认为int类型,[Underlying Type:{ Byte }]与[External Type] {MyEnumType:Int}的类型不匹配所以要修复我原来的tinyint字段,你需要像这样定义你的枚举:
public enum MyEnumType : byte
{ One, Two, Three, All }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8821 次 |
最近记录: |