c# - 从数据库表创建枚举/类

标签 c# database

我有一个基本上包含不同类型事物的数据库表。我将以动物为例。我有一个名为 AnimalTypes 的表:

AnimalTypes
{
     ID:int,
     Name:string
}

然后我填充它:

1:Dog,
2:Cat,
3:Fish

然后我想创建某种 C# 对象,其功能类似于此枚举,完全从数据库中读取:

enum AnimalTypes
{
     Dog = 1,
     Cat = 2,
     Fish = 3
}

有没有一种方法可以按照描述从数据库表中创建枚举/类?我基本上希望能够使用智能感知和 AnimalTypes.Dog 作为示例来引用 AnimalTypes 表中的内容;我实际上并不需要枚举,只是需要类似枚举的功能。这可能吗?

编辑:正如我在其他相关问题中看到的那样,我对生成 DLL 并不那么兴奋。我觉得这应该可以通过反射(reflection)来实现。

假设我不需要智能感知。

最佳答案

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

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

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

关于c# - 从数据库表创建枚举/类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4506233/

相关文章:

mysql - 无法访问 PHPmyadmin。我的wamp服务器版本2.4

database - 将数据库从 Hypersonic 更改为 MySQL 后,Liferay 不保存设置

c# - SendToZip 和 C# CreateFromDirectory zipfile 之间的区别

c# - mvc 4下拉选择默认值

c# - 为什么这个程序会出错? `Object synchronization method was called from an unsynchronized block of code`

database - 在桌面 PostgreSQL 中使用 pg_read_file 读取文件

java - 将 VARBINARY 值隐式转换为 NUMERIC 字段期间出现域错误?

c# - 输入数字或 Q 退出

c# - "Turning"一个 IEnumerable<IEnumerable<T>> 90 度

Android 使用数据库制作测验应用程序