gpt4 book ai didi

entity-framework-5 - Tinyint(byte),SmallInt(Int16) 与 EF5 中的 Enum 不兼容

转载 作者:行者123 更新时间:2023-12-03 10:46:43 25 4
gpt4 key购买 nike

使用数据库优先设计并具有 tinyint(或 smallint)列:

[MyEnumColumn] [tinyint] NOT NULL

我将此列映射到 EDM 中的枚举类型
External Type: NSpace.MyEnumType
Name:MyEnumType
UnderlyingType:Byte

其中 NSpace.MyEnumType 定义如下:
public enum MyEnumType 
{ One, Two, Three, All }

仅在尝试从上下文加载实体时出现此错误:

Schema specified is not valid. Errors:

No corresponding object layer type could be found for the conceptual type 'EntityDataModel.MyEnumType'.

The following information may be useful in resolving the previous error:

The underlying type of CLR enumeration type does not match the underlying type of EDM enumeration type.



如果我使用 [Smallint] 和 [Int16],同样适用,但是一旦我将数据库更改为 [Int] 并将枚举类型更改为 [Int32],错误就消失了。

为什么我需要在 4Byte (Int) 数据字段而不是 1Byte (Tinyint) 中存储枚举值,因为 99.9% 时间的枚举没有超过 256 个项目,或者我错过了其他东西?

最佳答案

好吧,如果有人感兴趣,问题出在枚举的默认类型中:

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

由于枚举默认类型为 国际 , [底层类型:{ 字节 }] 与 [External Type] {MyEnumType:Int} 的类型不匹配,因此要为我的原始 tinyint 字段修复它,您需要像这样定义枚举:
public enum MyEnumType : byte
{ One, Two, Three, All }

关于entity-framework-5 - Tinyint(byte),SmallInt(Int16) 与 EF5 中的 Enum 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com