C# 通过枚举或关系表定义数据状态

C# 通过枚举或关系表定义数据状态,c#,asp.net,database,enums,relation,C#,Asp.net,Database,Enums,Relation,我有一个应用程序,它在关系数据库中有数据行。表需要一个状态,该状态将始终为 未提交、等待批准、批准、拒绝 现在,由于这些将永远不会改变,我正在尝试决定实现它们的最佳方式,我可以考虑一个带有值的状态枚举和一个指定的int,其中int被放置在表行的Status列中 或链接到该表的状态表,用户选择其中一个作为当前状态 我无法决定哪一个是更好的选择,因为我目前有一个带有这些值的枚举,用于填充下拉列表等,并设置sql(因为它当前用于bool Approved和submitted for approval,

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

未提交、等待批准、批准、拒绝

现在,由于这些将永远不会改变,我正在尝试决定实现它们的最佳方式,我可以考虑一个带有值的状态枚举和一个指定的int,其中int被放置在表行的Status列中

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

我无法决定哪一个是更好的选择,因为我目前有一个带有这些值的枚举,用于填充下拉列表等,并设置sql(因为它当前用于bool Approved和submitted for approval,但由于各种原因和需要更改,这是脏的)

不知道你对这件事有什么想法,我是应该选一件还是另一件


如果有什么不同,我使用的是实体框架。

如果枚举从未更改,我会使用它,因为这将更有效(没有连接以获得状态)。此外,这是一个更简单的解决方案:)

既然这些永远不会改变

你可以相信这个假设是错误的,而且比你想象的要快

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


您可以在查找表中使用自然主键,因此无需执行联接即可获得值。是的,字符串比整数id占用更多的空间,但如果您的目标是避免联接,则这将实现该目标。

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