C#Enum使用Sql Server表中的值

目前我有一个SQL Server 2005表,看起来有点像:

 ID | 名字| 降序
 ----------------------
 1 |  ONE | 价值一
 3 | 三| 价值三
 5 | 五| 价值五

此表对应于C#中的枚举,如下所示:

enum MsgTypes{ Value One ONE = 1, Value Three THREE = 3, Value Five FIVE = 5 } 

所以我的问题是:是否有一种很好的方法将枚举与SQL表相关联,以便不需要在c#代码中手动对表中的值进行任何更改/添加?

如果你想要它有点动态,为什么要把它作为一个开头的枚举? 只需从应用启动时从表中获取详细信息,并在(比方说) Dictionary记住它们。 如果您愿意,您可以始终将值封装在您自己的值类型中,从而强制执行该范围。

或者,如果您不介意重新编译,可以在构建时获取它并自动生成枚举源代码。

我最近必须考虑类似的东西( 重构枚举 ) – 基本上我考虑使用Dictionary >来存储枚举值。如果你想要,你可以从表中动态加载以填充字典。

我要添加的一件事 - 如果你要用已经存在的动态取代已经存在的枚举,你将不得不考虑你将如何动态填充exception所引发的exception。

对我而言,这取决于枚举/数据库查找表的更改频率。 在我们的系统中,我们有大约六个这样的枚举/查找,我不介意重新编译以添加一个emum选项+ DB row becuase:

  1. 这种情况并不经常发生 – 可能是过去一年我想到的两倍
  2. 新选项通常有新的业务逻辑,因此无论如何编码都是必要的。

另一种方法是实现具有ID,Name和Desc属性的自定义对象,这些对象将封装数据库表。

我接受Jon建议的内容,但如果您希望在数据库中使用Enum列表并希望在代码中使用它们,则可以使用nHydrate中的TypeTablefunction为您的项目。