0

次のクエリがあります(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 に変更しない例外を修正することは可能ですか? (および追加のバイトプロパティなし:))

4

2 に答える 2

0

これは MySQL .NET コネクタのバグです。したがって、1 つのオプションしかありません。回避策を作成して、次のリリースを待ちます。

于 2012-11-01T06:22:22.770 に答える
-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」フィールドがバイトの場合、バイトとしてキャストされます...

于 2012-10-31T10:21:03.510 に答える