2

最初にEntity Frameworkコードで列挙型を操作する方法を教えてください。クラスの「Annonce」でこのプロパティを使用できるようにしたい

public Status EtatAnnonce { get; set; } 

ステータスは次のように定義されます

public enum Status
{
    Pending,
    Approved
}
4

4 に答える 4

2

値を int としてデータベースに格納するには、コンバーター フィールドを作成する必要があります。

public int MyEnumValueInt {get;set;}

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

注: 列挙型のサポートは EF 5 で改善されます。

于 2012-04-12T09:58:46.837 に答える
1

向けてくれます

EF5 は列挙列を作成しません

最初に Entity Framework コードでの列挙型サポートの概要を説明するには:

EF4: サポートされていません

EF5: .net Framework 4.5 以降をターゲットにしている場合にのみサポートされます

EF6: .net 4.0 以降を対象とする場合にのみサポートされます

乾杯!

于 2014-10-24T10:26:16.207 に答える
0

EF の列挙型に関する 2 つの質問に回答しました。これらはあなたを助けるはずです:

EFコードファーストの列挙 - DBをシードしてから使用する標準的な方法?

EF 4.1 Code First - 列挙型ラッパーを複合型としてマップする

于 2012-04-12T10:01:32.517 に答える
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());
于 2014-08-13T05:17:18.387 に答える