代码之家  ›  专栏  ›  技术社区  ›  pencilslate

从实体创建枚举

  •  2
  • pencilslate  · 技术社区  · 15 年前

    我有名为事件和日志的表。事件表由ID、事件描述和类型组成。日志包含log id、event id(引用事件表中的id)和timstamp。

    我正在使用实体框架。在日志表中输入条目时,我提到事件ID是与事件表中的日志事件相对应的数字。当我继续在整个应用程序中使用这个日志记录时,记住所记录事件的事件ID变得很麻烦。我想在我的代码中将这些事件ID映射为枚举,并使用枚举以获得更好的可用性。

    是否有人使用此方法创建了枚举?如果是这样,请分享你对设计的想法。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Thorarin    15 年前

    这是可能的,但你必须定义 enum 手动。

    这是否是好的设计取决于您定义的不同事件的数量和时间。是否可以创建新的事件定义而不必更改代码?在这种情况下, 枚举 可能是个坏主意。如果事件ID列表是静态的且不太大,则 枚举 是可以接受的,而且(在我看来)更令人鼓舞。

    编辑: 很抱歉,我提供的解决方案实际上是在LinqToSQL中完成的,而不是实体框架1.0。一定是咖啡不够了。在ef中完成的方法是在分部类中定义正确类型的属性。

    例如,我的数据库中有一个列eventtype,我想将它映射到 枚举 . 我已经改名了 财产 从默认值 EventType EventTypeInt ,如下所示:

    EventCalendar table mapping in model http://www.subbot.net/personal/external/stackoverflow/entityframework-enum.png

    然后你设置 吸气剂 设定器 此列的属性 私有的 (在可能用于重命名EventType的属性管理器窗口中)。完成并保存后,请使用以下代码:

    public enum EventType
    {
        Unknown = 0,
        Concert = 1,
        Festival = 2
    }
    
    public partial class EventCalendar
    {
        public EventType EventType
        {
            get { return (EventType)EventTypeInt; }
            set { EventTypeInt = (int)value; }
        }
    }
    

    是的,很无聊。它在LINQ到SQL模型中更加实用。

        2
  •  0
  •   Graham Conzett    15 年前

    不是创建枚举,而是将它们表示为实体集中的导航属性?