C#使用Sql Server表中的值枚举

C#使用Sql Server表中的值枚举,c#,sql-server-2005,C#,Sql Server 2005,目前,我有一个SQL Server 2005表,看起来有点像: ID | name | desc ---------------------- 1 | ONE | Value One 3 | THREE | Value Three 5 | FIVE | Value Five ID | name | desc ---------------------- 1 |一|值一 3 |三|值三 5 |五|值五 此表与C#中的枚举对应,如下所示: enum MsgTypes{ <su

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

ID | name | desc ---------------------- 1 | ONE | Value One 3 | THREE | Value Three 5 | FIVE | Value Five ID | name | desc ---------------------- 1 |一|值一 3 |三|值三 5 |五|值五 此表与C#中的枚举对应,如下所示:

enum MsgTypes{
  <summary>Value One</summary>
  ONE = 1,
  <summary>Value Three</summary>
  THREE = 3,
  <summary>Value Five</summary>
  FIVE = 5
}
枚举MsgTypes{
价值一
1=1,
价值三
三等于三,
价值五
五等于五
}

因此,我的问题是:有没有一种好方法将枚举与SQL表关联起来,这样就不需要在c代码中手动对表中的值进行任何更改/添加?

如果希望它具有某种动态性,为什么要将其设为枚举?只需在应用程序启动时从表中获取详细信息,并在(比如)字典中记住它们即可。如果愿意,您可以始终将该值封装在您自己的值类型中,该值类型强制执行该范围


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

最近我不得不考虑类似的事情()--基本上我考虑使用字典
来存储枚举值。如果需要,可以从表中动态加载以填充字典


我要补充的一点是,如果要用动态的内容替换已经存在的枚举,则必须考虑如何处理作为动态填充的一部分而引发的异常。

对我来说,这取决于枚举/DB查找表的更改频率。在我们的系统中,大约有六个这样的枚举/查找,我不介意重新编译以添加一个emum选项+DB行,因为:

  • 这种情况并不经常发生——在过去的一年里,我能想到的可能有两次
  • 新选项周围通常有新的业务逻辑,因此无论如何编码都是必要的

  • 另一种选择是实现一个具有ID、Name和Desc属性的自定义对象,以封装数据库表。

    我接受Jon的建议,但如果您希望在数据库中使用枚举列表,并希望在代码中使用它们,您可以在项目中使用中的功能。

    表中的哪些更改需要反映在C代码中?您是否正在考虑潜在地更改与
    MsgTypes.ONE
    关联的ID?在我的情况下,我认为ID更改的可能性最小(尽管我不想说这是不可能的)。更可能的情况是名称更改或添加新名称。i、 e.
    MsgTypes。一个
    更改为
    MsgTypes.UNO
    MsgTypes。创建两个