C# 要在POCO EF中枚举的类型表
嗨,我是POCO的新手,我想知道是否可以将表映射为枚举。看看我的简单图表: 表C# 要在POCO EF中枚举的类型表,c#,entity-framework,entity-framework-4,enums,poco,C#,Entity Framework,Entity Framework 4,Enums,Poco,嗨,我是POCO的新手,我想知道是否可以将表映射为枚举。看看我的简单图表: 表UserType表示类型列表,非常类似于C#code中的枚举类型。所以我想生成一个属性类型为enum的类 大概是这样的: [Table("User")] public class User { public int UserId { get; set; } public string Name { get; set; } [ForeignKey("???")] public Use
UserType
表示类型列表,非常类似于C#code中的枚举类型。所以我想生成一个属性类型为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:此代码不正确,这只是试图解释我的问题的一种方式。不,这是不可能的。实体应为引用类型(枚举为值类型),且应具有id属性。枚举只是一组命名常量。没有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,则应在用户类中创建用于映射到数据库列的integer属性,以及未映射但通过integer属性计算的enum属性:
[Column("UserType")]
public int UserTypeValue { get; set; }
[NotMapped]
public UserType Type
{
get { return (UserType) UserTypeValue;
set { UserTypeValue = (int)value;
}