c#中是否有动态生成Enum的方法?

本文关键字:Enum 方法 是否 动态 | 更新日期: 2023-09-27 18:01:40

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

tblEvents

  • EventID
  • UserID
  • EventType

tblEventTypes

  • EventTypeID
  • EventName

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

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

我想创建一个枚举来表示事件类型。是否有一种方法来创建基于tblEventTypes中的数据生成的动态枚举?就像EF如何基于数据库中的表生成实体一样,我想基于表及其当前数据生成enum。因此,添加事件类型将是向tblEventTypes添加一行,然后在EF设计器中运行更新或在代码中自动更新我的enum的东西的问题。

c#中是否有动态生成Enum的方法?

您不能使用EF设计器,但是您可以使用T4模板来生成枚举。

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

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

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

我不明白将它们用作动态类型有什么意义,因为您只能以显式的方式使用它们(例如记录特定类型的事件)。

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