请,首先如何在实体框架代码中使用枚举。我希望在我的课堂“Annonce”中我可以拥有这个属性
public Status EtatAnnonce { get; set; }
和状态是这样定义的
public enum Status
{
Pending,
Approved
}
请,首先如何在实体框架代码中使用枚举。我希望在我的课堂“Annonce”中我可以拥有这个属性
public Status EtatAnnonce { get; set; }
和状态是这样定义的
public enum Status
{
Pending,
Approved
}
您需要创建一个转换器字段以将值作为 int 存储在数据库中。
public int MyEnumValueInt {get;set;}
[NotMapped]
public MyEnum MyEnumValue
{
get{ return (MyEnum)MyEnumValueInt;
set{ MyEnumValueInt = (int)value;
}
注意:枚举支持将在 EF 5 中得到改进。
将指向你
先总结一下实体框架代码中的枚举支持:
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!
您可以在模型中使用私有属性将数据映射到您想要的任何属性类型。
// 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());