我有名为Events和Log的表。事件表由ID,事件描述和类型组成。并且,日志包含LogID,EventID(引用Event表中的ID)和timstamp。从实体创建枚举
我正在使用实体框架。在日志表中输入条目时,我提到了事件ID,作为Event表中与日志事件对应的编号。当我继续在应用程序中使用此日志记录时,记住记录事件的事件ID变得很麻烦。我想将这些事件ID映射为我的代码中的枚举,并使用枚举以获得更好的可用性。
有没有人使用这种方法创建枚举?如果是这样,请分享您对创建设计的想法。
我有名为Events和Log的表。事件表由ID,事件描述和类型组成。并且,日志包含LogID,EventID(引用Event表中的ID)和timstamp。从实体创建枚举
我正在使用实体框架。在日志表中输入条目时,我提到了事件ID,作为Event表中与日志事件对应的编号。当我继续在应用程序中使用此日志记录时,记住记录事件的事件ID变得很麻烦。我想将这些事件ID映射为我的代码中的枚举,并使用枚举以获得更好的可用性。
有没有人使用这种方法创建枚举?如果是这样,请分享您对创建设计的想法。
这是可能的,但你必须手动定义enum
。
这是否是好设计取决于您定义的不同事件的数量以及时间。是否可以创建新的事件定义而不必更改代码?在这种情况下,enum
可能是一个坏主意。如果事件ID列表是静态的并且不是太大,那么enum
将是可接受的,并且(在我看来)甚至是可以鼓励的。
编辑:我的歉意,我提供的解决方案实际上是它在LINQ to SQL,而不是Entity Framework 1.0中完成的方式。一定是缺乏咖啡。在EF中完成的方式是在分部类中定义一个正确类型的属性。
例如,我在我的数据库中有一个EventType列,我想要映射到一个enum
。我已经从默认EventType
更名为财产到EventTypeInt
,你可以看到如下:
然后你此列设置吸气和二传手属性私人(在您可能用于重命名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你有没有考虑将它们表示为实体集中的导航属性?
你能为此抛出更多的光芒吗?一个例子或参考将是伟大的! – pencilslate 2009-08-07 14:57:49
在你的初始描述中你说过:“事件表包含ID,事件描述和类型,并且日志包含LogID,EventID(引用事件表中的ID)和timstamp。”我认为这意味着EventID列与事件表中的ID之间有外键关系。如果是这种情况,如果您从数据库中生成EDMX文件,EF1将根据此关系创建导航属性。这些导航属性将允许您执行查找,就像使用数据库一样。例如:logInstance.Event.ID会给你相应的事件ID。 – 2009-08-07 17:16:52