我工作的几乎所有应用程序都涉及一些查找值。例如,很多时候需要在WebForm上显示语言列表(英语,法语等)供用户选择。
此类查找值的公共数据结构包括整数Id和字符串作为名称。由于这些查找值经常使用,因此不太可能更改。大多数时候,我只是在C#中定义一个全局枚举,而不是从数据库中获取它们,而不是从数据库中获取它们
enum Language : int { English = 1, French = 2}
我多年来一直在处理这样的查找值。我知道这可能不是处理它们的最佳方式。例如,每次向系统添加新语言时,都需要记住更新该枚举。
我想这是一个非常常见的场景,只是想知道你们如何处理这种类型的查找值。
谢谢,
答案 0 :(得分:1)
我通常把它们放在数据库中,因为你永远不知道他们是否以及什么时候需要改变。有些时候 - 按设计 - 我知道列表不会改变,对于那些,我将使用枚举。在所有其他情况下,我将使用数据库表。
答案 1 :(得分:0)
根据数据要求,我通常会在经常单独加载的配置文件中处理类似小的查找,以作为应用程序的所有实例的应用程序变量应用。当应用程序启动或回收时,会查找一次数据,然后在数据耗尽之前保持有用。
虽然,我有很多类似性质的中间数据需要定期维护。将它放入数据库更容易,因为至少可以构建一个小型维护应用程序来处理它。如果将它们放入枚举中,则必须重新编译并重新部署。
我遇到了与资源文件类似的问题。由于资源文件已编译,因此需要进行另一次重新部署。
答案 2 :(得分:0)
您可以从T4模板中受益。我还没有使用过这些,因为我们没有满足需求的要求,但我最终想要使用它们。
这是一篇很棒的文章,用于从数据库表生成枚举(代码很难在页面上阅读,文章末尾有一个指向源代码的链接): http://www.thecodejunkie.com/2008/11/generate-enums-from-database-using-text.html
此外,Scott Hanselman在他的博客上有list个很棒的T4模板/文章。