我有名为事件和日志的表。事件表由 ID、事件描述和类型组成。并且,Log 包含 LogID、EventID(指事件表中的 ID)和 timstamp。
我正在使用实体框架。在日志表中创建条目时,我提到事件 ID 作为与事件表中的日志事件对应的编号。当我继续在应用程序中使用此日志记录时,记住已记录事件的事件 ID 变得很麻烦。我想将这些事件 ID 映射为我的代码中的枚举,并且只使用枚举以获得更好的可用性。
有没有人使用这种方法创建枚举?如果是这样,请分享您对创建设计的想法。
我有名为事件和日志的表。事件表由 ID、事件描述和类型组成。并且,Log 包含 LogID、EventID(指事件表中的 ID)和 timstamp。
我正在使用实体框架。在日志表中创建条目时,我提到事件 ID 作为与事件表中的日志事件对应的编号。当我继续在应用程序中使用此日志记录时,记住已记录事件的事件 ID 变得很麻烦。我想将这些事件 ID 映射为我的代码中的枚举,并且只使用枚举以获得更好的可用性。
有没有人使用这种方法创建枚举?如果是这样,请分享您对创建设计的想法。
这是可能的,但您必须enum
手动定义。
这是否是好的设计取决于您定义的不同事件的数量以及时间。是否可以创建新的事件定义而不必更改代码?在这种情况下, anenum
可能是个坏主意。如果事件 ID 列表是静态的并且不太大,那么一个enum
是可以接受的,并且(在我看来)甚至是可鼓励的。
编辑:抱歉,我提供的解决方案实际上是在 LINQ to SQL 中完成的方式,而不是 Entity Framework 1.0。一定是缺少咖啡。它在 EF 中完成的方式是在部分类中定义正确类型的属性。
例如,我的数据库中有一个 EventType 列,我想将其映射到enum
. 我已将该属性从默认重命名EventType
为EventTypeInt
,如下所示:
(来源:subbot.net)
然后将此列的Getter和Setter属性设置为私有(在您可能用来重命名 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 模型中更加实用。
您是否考虑过将它们表示为实体集中的导航属性,而不是创建 ENUMS?