繁体   English   中英

从数据库表创建枚举/类

[英]Creating an enum/class from a Database Table

我有一个数据库表,基本上包含不同类型的东西。 我会以动物为例。 我有一个名为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。

尝试此解决方案:

使用T4代码生成查找表。

如果希望能够在编译时使用枚举或类,则必须生成程序集。 反射发生在执行时,因此不会给你智能感知。

这是一个常见问题 - 数据库表中有一组不同的值,这些值不会经常更改,因此它们在源代码中被建模为enum 这允许以非常易读的方式容易地使用这些稍微静态的值。 问题是,当值发生变化时,如果enum也发生了变化,那将会很好。

尝试保持enum和数据库同步的问题是,自动进程不会改变这样一个事实,即如果要更改数据库,则不太可能在不必滚动新代码来利用更改的情况下这样做值。 最好将这些值建模为enum ,并将它们存储在数据库中。 只需在需要时手动同步它们。

总有代码生成: http//www.mygenerationsoftware.com/如果你不想去反射路线。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM