目前我的SQL Server 2005表格看起来有点像:
ID | name | desc ---------------------- 1 | ONE | Value One 3 | THREE | Value Three 5 | FIVE | Value Five
此表对应于C#中的枚举,如下所示:
enum MsgTypes{
<summary>Value One</summary>
ONE = 1,
<summary>Value Three</summary>
THREE = 3,
<summary>Value Five</summary>
FIVE = 5
}
所以我的问题是:是否有一种很好的方法将枚举与SQL表相关联,以便不需要在c#代码中手动对表中的值进行任何更改/添加?
答案 0 :(得分:11)
如果你想要它有点动态,为什么要把它作为一个开始的枚举?只需从应用启动时的表格中获取详细信息,并在(例如)Dictionary<int, string>
中记住它们。如果您愿意,可以始终将值封装在您自己的值类型中,从而强制执行该范围。
或者,如果您不介意重新编译,可以在 build 时间获取它并自动生成枚举源代码。
答案 1 :(得分:3)
我最近必须考虑类似的事情(refactoring an enum) - 基本上我考虑使用字典<A, B
&gt;存储枚举值。如果需要,可以从表中动态加载以填充字典。
我要添加的一件事 - 如果你要用已经存在的动态取代已经存在的枚举,你将不得不考虑你将如何动态填充异常所引发的异常。< / p>
答案 2 :(得分:1)
对我而言,这取决于枚举/数据库查找表的更改频率。在我们的系统中,我们有大约六个这样的enum / lookups,我不介意重新编译以添加一个emum选项+ DB row becuase:
答案 3 :(得分:0)
另一种方法是实现一个自定义对象,其ID,Name和Desc属性将封装数据库表。
答案 4 :(得分:0)