Code Enum不允许在“Enums”课程中使用? (EF 5)

时间:2012-11-26 22:12:54

标签: c# asp.net .net entity-framework ef-code-first

我正在尝试做一些非常简单的事情。我想在我的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 生成了!我的第一次设置是不常见的还是“请不要”的方法?

我想听一些标准化或最佳做法的建议和/或解释为什么我的第一次设置不起作用。

2 个答案:

答案 0 :(得分:3)

我以前从未见过有人在Enum周围使用包装类。当然,可能是我没有足够的。 :)我在一个命名空间中看到了包含大量enum定义的catch-all文件,但从来没有包装类。我没有看到包装类添加任何东西。

正如@Pawel所说,EF不支持嵌套类型。这种情况是有道理的:如果你实例化内部类型而不是外部类型,那么外部类型的重点是什么?

答案 1 :(得分:1)

EF不支持嵌套类型(无论是枚举,复杂类型还是实体)。