请先了解如何在Entity Framework代码中使用枚举。我希望在我的班级“Annonce”中我可以拥有这个属性
public Status EtatAnnonce { get; set; }
和状态定义如下
public enum Status
{
Pending,
Approved
}
答案 0 :(得分:2)
您需要创建一个转换器字段,将值作为int存储在数据库中。
public int MyEnumValueInt {get;set;}
[NotMapped]
public MyEnum MyEnumValue
{
get{ return (MyEnum)MyEnumValueInt;
set{ MyEnumValueInt = (int)value;
}
注意:在EF 5中将改进枚举支持。
答案 1 :(得分:1)
会指向你
EF5 does not create enum columns
首先在Entity Framework代码中提供枚举支持的摘要:
EF4:不支持
EF5:仅在您定位.net framework 4.5及更高版本
时才受支持EF6:仅在您定位.net 4.0及更高版本
时才受支持干杯!
答案 2 :(得分:0)
我在EF中回答了两个关于Enums的问题;这些应该可以帮助你:
Enums with EF code-first - standard method to seeding DB and then using?
和
答案 3 :(得分: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());