2

请,首先如何在实体框架代码中使用枚举。我希望在我的课堂“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 不创建枚举列

先总结一下实体框架代码中的枚举支持:

EF4:不支持

EF5: only supported if you are targeting .net framework 4.5 and higher

EF6: only supported if you target .net 4.0 and higher

Cheers!

于 2014-10-24T10:26:16.207 回答
0

我已经回答了关于 EF 中枚举的两个问题;这些应该可以帮助您:

使用 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 回答