enum型はchar型ではなく、int型です。次の行はそれを示します:
Console.WriteLine(typeof(Gender).GetEnumUnderlyingType());
System.Int32
Press any key to continue . . .
列挙型メンバーの値は、実際にはそれぞれ77と70です。
Console.WriteLine((int)Gender.Male);
Console.WriteLine((int)Gender.Female);
77
70
Press any key to continue . . .
C#/ VB.NETの列挙型の有効な基になる型は、byte、sbyte、short、ushort、int、uint、long、およびulongのみです。このリストにない基になるタイプを次のように配置しようとすると、次のようになります。
public enum Gender : char
{
Male = 'M',
Female = 'F'
}
次のコンパイルエラーが表示されます。
error CS1008: Type byte, sbyte, short, ushort, int, uint, long, or ulong expected
これは、C#の列挙型の背後にある理論です。現在、EF部分-EFは現在、列挙型の基になるタイプのみをサポートしています:Edm.Byte、Edm.SByte、Edm.Int16、Edm.Int32、およびEdm.Int64(Edmタイプシステムには符号なしタイプはありません)。enumsプロパティの場合、データベース内の対応する列は、プロパティのenumタイプの基になるタイプと一致する必要があります(つまり、enumプロパティの基になるタイプがEdm.Int32の場合、列はintタイプである必要があります)。
あなたの場合-本当に列挙型を使いたいのであれば、データベースの列はint型でなければなりません。エンティティを追加すると、列に70と77の値が表示されることを期待する必要があります。