我的模型具有一个枚举的属性:
Sql server column "user_status" is a int NOT NULL.
[Column("User_Status")]
public UserStatus UserStatus { get; set; }
public enum UserStatus
{
Pending = 1,
Member = 2,
Banned = 3
}
目前,我在保存实体时遇到错误,因为它说 user_status 列不能为空。
如何让 Entity Framework 在保存/更新时将此属性转换为 Int,以及在加载实体时将其转换为枚举。
最佳答案
Entity Framework 4 不支持使用枚举作为列类型。如果您想获得对枚举的 native 支持,则需要升级到 Entity Framework 5。
如果您绝对必须使用 EF 4(因为已经在其中实现了一个项目),那么我建议您这样做:
[Column("User_Status")]
public int UserStatusAsInt { get; set; }
[NotMapped]
public UserStatus UserStatus
{
get { return (UserStatus) this.UserStatusAsInt; }
set { this.UserStatusAsInt = (int)value; }
}
这不是一个很好的解决方案,但它是解决问题的可靠方法,您仍然可以在页面上绑定(bind)到它,并将其视为其他代码中的枚举本身。
关于c# - 如何在 Entity Framework 4 中映射枚举属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15818622/