C# 是否有一种从数据库表动态填充枚举的方法?

C# 是否有一种从数据库表动态填充枚举的方法?,c#,asp.net,enums,C#,Asp.net,Enums,我想创建一个枚举来选择可能性,但这些可能性可能会改变。因此,为了能够轻松地进行更改,我希望这些可能性存储在数据库表中并通过数据库表进行管理。是否有一种从数据库表动态填充枚举的方法? 谢谢你,多夫。我不知道这种可能性。但是,为什么不使用???您的意思是希望枚举自动更改(添加/删除枚举内容)以反映数据库表中的值吗?如果是的话,那是不可能的。枚举只是一组命名的整数常量。您必须手动更改枚举并重新编译程序集。理论上,您有两个选项: 使用CodeDom构造枚举: 将枚举源代码写入文本文件,并将其动态编译为

我想创建一个枚举来选择可能性,但这些可能性可能会改变。因此,为了能够轻松地进行更改,我希望这些可能性存储在数据库表中并通过数据库表进行管理。是否有一种从数据库表动态填充枚举的方法?
谢谢你,多夫。

我不知道这种可能性。但是,为什么不使用???

您的意思是希望枚举自动更改(添加/删除枚举内容)以反映数据库表中的值吗?如果是的话,那是不可能的。枚举只是一组命名的整数常量。您必须手动更改枚举并重新编译程序集。

理论上,您有两个选项:

  • 使用
    CodeDom
    构造枚举:

  • 将枚举源代码写入文本文件,并将其动态编译为程序集


  • 然而,正如其他人所说,如果它是动态变化的,可能枚举不是您的正确选择。

    尽管可以在运行时使用数据库值创建
    枚举,但在编译时它不会有任何值


    参见关于替代方案的文章。

    如果他们经常更改,想知道他们如何有资格成为
    Enum
    ?他们不会经常更改,但当他们更改时,通过表单更改数据库似乎更容易、更有效。是的。这是我的意图。谢谢。enum的优点是它可以放置在一种可以在整个应用程序中使用的方式。这对我来说很重要,尤其是因为我在web中工作,我不想经常使用会话或其他状态对象,也不想经常查询数据库,以便应用程序的不同部分可以使用数据。@Dov Miller:这里不必使用会话或任何其他状态变量。根据我建议的数据库获取枚举或字典意味着每次需要时都必须从数据库加载数据。谁说不能从整个应用程序中使用字典?我想知道是否有一种方法可以在会话开始时从数据库中加载一次数据,而不必在每次需要数据时都这样做。谢谢你我想知道的是有没有办法避免。感谢you@Dov米勒:数据需要保存在某个地方,如果你不需要每次都从数据库中加载,每次你想使用它。。。