2

我有名为事件和日志的表。事件表由 ID、事件描述和类型组成。并且,Log 包含 LogID、EventID(指事件表中的 ID)和 timstamp。

我正在使用实体框架。在日志表中创建条目时,我提到事件 ID 作为与事件表中的日志事件对应的编号。当我继续在应用程序中使用此日志记录时,记住已记录事件的事件 ID 变得很麻烦。我想将这些事件 ID 映射为我的代码中的枚举,并且只使用枚举以获得更好的可用性。

有没有人使用这种方法创建枚举?如果是这样,请分享您对创建设计的想法。

4

2 回答 2

2

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

这是否是好的设计取决于您定义的不同事件的数量以及时间。是否可以创建新的事件定义而不必更改代码?在这种情况下, anenum可能是个坏主意。如果事件 ID 列表是静态的并且不太大,那么一个enum是可以接受的,并且(在我看来)甚至是可鼓励的。

编辑:抱歉,我提供的解决方案实际上是在 LINQ to SQL 中完成的方式,而不是 Entity Framework 1.0。一定是缺少咖啡。它在 EF 中完成的方式是在部分类中定义正确类型的属性。

例如,我的数据库中有一个 EventType 列,我想将其映射到enum. 我已将该属性从默认重命名EventTypeEventTypeInt,如下所示:

模型中的 EventCalendar 表映射
(来源:subbot.net

然后将此列的GetterSetter属性设置为私有(在您可能用来重命名 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 to SQL 模型中更加实用。

于 2009-08-05T05:18:57.137 回答
0

您是否考虑过将它们表示为实体集中的导航属性,而不是创建 ENUMS?

于 2009-08-05T04:14:19.077 回答