有没有办法在C#中动态生成枚举?

时间:2011-07-08 21:06:55

标签: c# asp.net sql entity-framework enums

在我的应用程序中有两个表。

tblEvents

  • EventID
  • 用户ID
  • 日期
  • 的EventType

tblEventTypes

  • EventTypeID
  • 事件名称

tblEvents包含我们的应用程序中发生的事件的日志。向事件添加事件时所需的其中一列是事件类型。事件类型必须是存储在tblEventTypes中的事件类型的ID。

在我使用Entity Framework的应用程序中,我为存储过程创建了一个函数import,它将事件添加到tblEvents。目前,我将事件类型的整数传递给函数import创建的方法。这对我来说似乎是不可读的,因为你不知道整数意味着什么,没有查看数据库,找到事件类型表,看看它是什么事件。

我想创建一个枚举来表示事件类型。有没有办法创建一个基于tblEventTypes中的数据生成的动态枚举?就像EF基于数据库中的表生成实体一样,我想基于表生成一个枚举,它是当前数据。因此,添加一个事件类型就是向tblEventTypes添加一行,然后在EF设计器中运行更新,或者在代码中自动更新我的枚举。

2 个答案:

答案 0 :(得分:3)

您无法使用EF设计器,但可以使用T4 template生成枚举。

答案 1 :(得分:1)

我遇到过这种情况很多次,而且我的决定是应该明确定义事件类型并为每个条目创建一个枚举,例如...

Public enum EventType
{
     Info = 100,
     Error = 200
 }

我会创建一个db脚本,用于在数据库中创建项目并使它们手动保持同步。

我无法看到将它们用作动态类型是有意义的,因为您只能以明确的方式使用它们(例如记录某种类型的事件)。

据我所知,EF不支持实体记录建模,只支持模式