C#使用Sql Server表中的值枚举
目前,我有一个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#中的枚举对应,如下所示: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
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。创建两个
。