我的模型具有一个枚举的属性:

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/

10-11 12:23