【问题标题】:EF5 code first enum support - define the enum inside the entityEF5 代码优先枚举支持 - 在实体内部定义枚举
【发布时间】:2025-11-30 07:05:03
【问题描述】:

有趣的问题..

我有一个具有状态字段的类型。为了我的方便和事情的顺序,我想在 Entity 类型中定义这个状态的枚举:

public class User
{
  public enum Statuses
  {
     Active,
     Suspended
  }

  public int ID { get; set; }
  public Statuses Status { get; set; }
}

由于某种原因,Status 属性未映射到数据库。

现在有趣的是 - 如果我从 User 中取出枚举定义,那么它就会映射到 DB!

我知道快速的答案是将它留在课堂之外,但这需要我给枚举一个更长的名称 UserStatuses 或类似的名称,因为现在它不在 User 内。

有人遇到过这个问题吗?在我开始妥协之前有没有解决方案?

谢谢!

【问题讨论】:

    标签: .net entity-framework enums code-first


    【解决方案1】:

    EF5 仅支持在命名空间下定义的枚举。它不支持在一个类中定义或嵌套在另一个枚举中的枚举。

    我不知道这是否是“最正确”的做事方式,但我更喜欢将任何枚举保留在自己的命名空间(“枚举”或类似名称)中,并给它们起更有意义的名称(即:UserStatus) .一个名为“Statuses”的枚举太通用了,一旦你有六个枚举定义浮动就会变得混乱,并且当你进一步进入应用程序并且必须向其他实体添加状态枚举时,还可能导致命名空间冲突。

    【讨论】:

    • 感谢您的回答。我想这是一个方法问题。好吧,我将把这个问题留得更久一点,看看我是否还能以某种方式“按我的方式”做事。如果不是,那么我想你的答案就是那个! :)