我正在尝试做一些非常简单的事情。我想在我的Code First解决方案中使用Enum
作为列类型。我正在使用Entity Framework 5.0 Stable Release。
考虑我的Enum
包装类和模型:
public class Enums
{
public enum UserType
{
Bronze = 0,
Silver = 1,
Gold = 2,
Admin = 4
}
}
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public Enums.UserType UserType { get; set; }
}
如果我生成数据库,则不会生成列UserType
。当我删除class
周围的“Enum
包装”时,就像这样:
public enum UserType
{
Bronze = 0,
Silver = 1,
Gold = 2,
Admin = 4
}
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public UserType UserType { get; set; }
}
DOES 生成了!我的第一次设置是不常见的还是“请不要”的方法?
我想听一些标准化或最佳做法的建议和/或解释为什么我的第一次设置不起作用。
答案 0 :(得分:3)
我以前从未见过有人在Enum
周围使用包装类。当然,可能是我没有足够的。 :)我在一个命名空间中看到了包含大量enum
定义的catch-all文件,但从来没有包装类。我没有看到包装类添加任何东西。
正如@Pawel所说,EF不支持嵌套类型。这种情况是有道理的:如果你实例化内部类型而不是外部类型,那么外部类型的重点是什么?
答案 1 :(得分:1)
EF不支持嵌套类型(无论是枚举,复杂类型还是实体)。