2012-04-12 24 views
2

してください。エンティティフレームワークのコードでenumをどのように扱うか。私は私のクラス「Annonce」に私はこのpropretyEFコードのenumsを最初に

public Status EtatAnnonce { get; set; } 

を持つことができ、ステータスは、データベースにint型として値を格納するためのコンバータのフィールドを作成する必要があり、この

public enum Status 
{ 
    Pending, 
    Approved 
} 
+0

これを確認してください。 http://the--semicolon.blogspot.com/p/handling-enum-in-code-first-entity.html – iJay

答えて

2

のように定義されていることを望みます。

public int MyEnumValueInt {get;set;} 

[NotMapped] 
public MyEnum MyEnumValue 
{ 
    get{ return (MyEnum)MyEnumValueInt; 
    set{ MyEnumValueInt = (int)value; 
} 

注:列挙型のサポートは、私はEFで列挙型に関する二つの質問に答えましたEF 5.

0

あなたが好きなプロパティ型にデータをマップするために、モデル内のプライベートプロパティを使用することができます。

// Model 
public class Piece 
{ 

    // Subclass Piece to add mappings for private properties 
    public class PieceConfig : EntityTypeConfiguration<Piece> 
    { 
     public PieceConfig() 
     { 
      Property(b => b.dbtype); // needed for EF to see the private property 
     } 
    } 

    [Column("type", TypeName = "VARCHAR")] 
    private string dbtype { get; set; } 

    [NotMapped] 
    public PIECE type 
    { 
     get { return (PIECE)Enum.Parse(typeof(PIECE), dbtype); } 
     set { dbtype= value.ToString(); } 
    } 
} 

その後、あなたは自分のOnModelCreatingメソッドに設定を追加する必要が

modelBuilder.Configurations.Add(new Piece.PieceConfig()); 
1

は、Entity Frameworkのコード内で列挙型のサポートの概要を与えるために

EF5 does not create enum columns

に向けてあなたを指します最初:

EF4:Not supp

EF5をorted:あなたは、.NET Framework 4.5と高い

EF6をターゲットにしている場合にのみサポート:あなたは.NET 4.0と高い

乾杯を対象とする場合にのみサポート!

関連する問題