从数据库或反之亦然生成枚举?

Ben*_*nny 6 c# t4 enums

我想弄清楚哪种方法是"正确的".我在我的数据库中有一堆查找表,并希望在这些值之上放置一个枚举,因此,在编码时,它更容易阅读(以及不使用硬编码值).

我想知道是否应该根据现有的枚举生成我的表值,或者我是否应该从表的值生成枚举.

编辑

根据前几条评论,这里有一些澄清:

值的变化频率可能相当频繁,因为它们意图是相当动态的.话虽如此,在添加任何一种方法之前都需要编译,因为需要更新枚举以公开新值.

这种需求的主要原因是因为我们不希望将人们绑定到特定的值列表,我们希望应用程序能够在需要时添加新条目.

在过去,我们已经从枚举中生成了数据,但我是第二个猜测自己

Tru*_*ill 1

我们通常从数据库生成枚举。我们使用CodeSmith,它允许我们创建可以根据需要轻松重新生成枚举的项目文件。

我们偶尔会采用另一种方式,通常是出于报告目的(当现有枚举值保留时)。

当然,我们也有一些枚举,它们的值永远不会持久。

一般来说,从数据库生成枚举的唯一原因是代码是否需要根据它们做出决策。如果您只想填充 ComboBox 并保留用户的选择,请不要生成枚举。

显然,根据值可以更改的枚举(或字符串)做出决策是脆弱的。您可能需要考虑在数据库架构中包含到期日期(或“起始日期”和“截止日期”),以便不会删除现有值。填充 UI 选择器时过滤过期值。这也使得更容易实现引用完整性。

与 C# 中一样,您必须注意枚举值可能会超出预期范围。在default您的switch.

我们提出了用于创建缓存查找列表的帮助器类,使这些列表更易于使用。

我并不提倡走这条路。如果你必须这样做,我们就是这样做的。