嗨,我是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:这段代码不正确,这只是一种解释我问题的方法。
答案 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;
}