我有一个数据库表,基本上包含不同类型的东西。我会以动物为例。我有一个名为AnimalTypes的表:
AnimalTypes
{
ID:int,
Name:string
}
然后我填写:
1:Dog,
2:Cat,
3:Fish
我想创建一些C#对象,类似于这个枚举的函数可以从数据库中完全读取:
enum AnimalTypes
{
Dog = 1,
Cat = 2,
Fish = 3
}
有没有办法按照描述从数据库表创建枚举/类?我基本上希望能够使用intellisense和AnimalTypes.Dog作为示例来引用AnimalTypes表中的内容;我实际上并不需要枚举,只是像某种功能那样的东西。这可能吗?
编辑:我对生成DLL感到非常兴奋,正如我在其他相关问题中看到的那样。我觉得这应该是可以反思的。
假设我不需要intellisense。
答案 0 :(得分:3)
答案 1 :(得分:2)
如果您希望能够在编译时使用枚举或类,则必须生成程序集。反射发生在执行时,因此不会给你智能感知。
这是一个常见问题 - 数据库表中有一组不同的值,这些值不会经常更改,因此它们在源代码中被建模为enum
。这允许以非常易读的方式容易地使用这些稍微静态的值。问题是,当值发生变化时,如果enum
也发生了变化,那就太好了。
尝试保持enum
和数据库同步的问题在于,自动过程不会改变这样一个事实:如果您要更改数据库,那么您不太可能不这样做滚动新代码以利用更改的值。最好将这些值建模为enum
,并将它们存储在数据库中。只需在需要时手动同步它们。
答案 2 :(得分:0)
如果你不想去反射路线,总会有代码生成:http://www.mygenerationsoftware.com/。