通过Enum或关系表定义数据的状态

时间:2010-08-20 15:26:46

标签: c# asp.net database enums relation

我有一个应用程序,它在关系数据库中有数据行,表需要一个始终为

的状态

未提交,等待批准,已批准,已拒绝

现在因为这些永远不会改变我试图决定实现它们的最佳方式我可以想到一个带有值的Status枚举和一个int,其中int被放置在表行的status列中。< / p>

或者链接到表的状态表,用户选择其中一个作为当前状态。

我无法确定哪个是更好的选项,因为我现在有一个枚举到位,这些值用于批准页面填充下拉列表等并设置sql(因为它目前用于bool Approved并提交审批但是由于各种原因,需要改变,这很脏。

想知道你对此的想法以及我是否应该选择其中一个。

如果它有任何区别我正在使用实体框架。

3 个答案:

答案 0 :(得分:1)

如果它永远不会改变,我会选择Enum,因为这会更高效(没有加入以获得状态)。此外,这是更简单的解决方案:)。

答案 1 :(得分:1)

  

现在因为这些永远不会改变......

你可以指望这个假设是假的,而且比你想象的要快。

我会使用查找表。在查找表中添加或更改值要比更改枚举的定义容易得多。

您可以在查找表中使用自然主键,因此您无需进行连接即可获取值。是的,字符串占用的空间比整数id多一些,但如果你的目标是避免连接,那么这将实现这个目标。

答案 2 :(得分:1)

我使用Enums并使用[Description("asdf")]属性来绑定有意义的句子或Enums中不允许的其他内容。然后使用Enum文本本身作为下拉列表中的值,将描述作为可见文本。