4

我正在尝试做一些非常简单的事情。我想Enum在我的 Code First 解决方案中使用 as 列类型。我正在使用实体框架 5.0 稳定版。

考虑我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; }
}

确实生成了!我的第一个设置是一种不常见的或“请不要”的方法吗?

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

4

2 回答 2

3

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

正如@Pawel 所说,EF 不支持嵌套类型。这是有道理的:如果您要实例化内部类型而不是外部类型,那么外部类型的意义何在?

于 2012-11-26T22:21:38.240 回答
1

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

于 2012-11-26T22:19:04.567 回答