在POCO EF中键入表到Enum

时间:2014-01-28 13:03:28

标签: c# entity-framework entity-framework-4 enums poco

嗨,我是POCO的新手,我想知道是否可以将表格映射为枚举。看看我简单的图表:

http://www.jonataspiazzi.xpg.com.br/outpost/diagram02.png

UserType表示类型列表,非常类似于C#代码中的枚举类型。所以我想生成一个具有enum类型属性的类。

这样的事情:

[Table("User")]
public class User
{
    public int UserId { get; set; }

    public string Name { get; set; }

    [ForeignKey("???")]
    public UserType Type { get; set; }
}

[Table("UserType")]
public enum UserType
{
    [Description("Administrator")]
    Administrator = 1,

    [Description("Operator")]
    Operator = 2,

    [Description("Consultor")]
    Consultor = 3
}

是否可以使用这样的代码映射表格?
* ps:这段代码不正确,这只是一种解释我问题的方法。

1 个答案:

答案 0 :(得分:0)

不,不可能。实体应该是引用类型(枚举是值类型),它应该具有id属性。枚举只是一组命名常量。没有身份证。

解决方法 - 您可以在表User中保存整数值,该值可以映射到您的枚举:

public class User
{
    public int UserId { get; set; }
    public string Name { get; set; }
    public UserType Type { get; set; }
}

public enum UserType
{
    Administrator = 1,
    Operator = 2,
    Consultor = 3
}

如果您使用的是EF 4,则应在User类中创建用于映射到数据库列的整数属性,以及未映射但通过整数属性计算的枚举属性:

[Column("UserType")]
public int UserTypeValue { get; set; }

[NotMapped]
public UserType Type
{
  get { return (UserType) UserTypeValue;
  set { UserTypeValue = (int)value;
}