3

エンティティ フレームワークを使用して列挙型をデータベースにマップする際に問題が発生しています。私は自分の問題をテストするために超基本的なクラスを設定しました:

public class Person
{
    public int PersonId { get; set; }
    public Genders Gender { get; set; }

    public enum Genders
    {
        Female, Male
    }
}

次のコンテキストで:

public DbSet<Person> Person { get; set; }

私は MVC 4 を使用しているので、マッピングを作成するために、Person をモデルとして、コンテキストをコンテキストとして新しいコントローラーを作成します。MVC スキャフォールディングはコントローラー、ビュー、および DB を作成しますが、DBを表示すると、PersonId という 1 つの列だけを持つ Person という名前のテーブルがありますが、Gender 列はありません

追加情報: .Net 4.5 をターゲットとする MVC 4 を使用し、Entity Framework 5.0 を使用して (dll バージョンを再確認しても)、(LocalDb)\V11.0 に接続します。

性別を次のように変更してみました:

public enum Genders : Byte
{
    Female = 0, 
    Male = 1
}

ある回答が示唆したように、性別を別のクラスに移動しようとさえしました。

私が持っていたのと同じ方法でクラスを設定して動作するMSDN の記事を1 つ見つけました。唯一の違いは、MVC の代わりにコンソール アプリケーションを使用していたことです。

私は何かが欠けていますか?

4

1 に答える 1

7

クラス外で列挙型を定義する必要があります。クラスに埋め込まないでください。

于 2013-01-21T19:19:04.070 に答える