在EF查询中使用枚举

时间:2012-10-31 08:10:31

标签: linq entity-framework enums

我有以下查询(EF5,.NET4.5):

from p in repository
select new Person() {
    Name = p.Name, 
    Birthday = p.Birthday,
    MyEnumValue = MyEnum.Value1
};

其中 MyEnumValue 枚举定义如下:

public enum MyEnum : byte
{
    Value1 = 1,
    Value2 = 2
}

在运行时,此代码导致异常:

从物化“System.Byte”类型到“MyApp.Domain.Models.MyEnum”类型的指定强制转换无效。

但如果我将枚举定义更改为

public enum MyEnum { ... }

一切正常。

是否可以修复异常不要将MyEnum更改为int? (并且没有额外的字节属性:))

2 个答案:

答案 0 :(得分:0)

这是MySQL .NET Connector的错误。所以只有一个选项 - 制定解决方法并等待下一个版本。

答案 1 :(得分:-2)

尝试演员:

from p in repository
select new Person() {
    Name = p.Name, 
    Birthday = p.Birthday,
    MyEnumValue  = (MyEnum) Enum.Parse(typeof(MyEnum), MyEnum.Value1, true)
};

如果“Person”的“MyEnumValue”字段是字节,那么转换为byte ...