C# 将ID从数据库链接到枚举

C# 将ID从数据库链接到枚举,c#,asp.net-mvc-4,linq-to-sql,enums,C#,Asp.net Mvc 4,Linq To Sql,Enums,我的数据库中有一个表是种子表,它有两列,一个ID和一个VARCHAR角色。我知道id 99将与管理员状态相关,但我不想硬编码此值。有人建议查看枚举来实现这一点,到目前为止,我所看到的所有示例对我来说都没有意义,而且它们似乎也没有比硬编码的值好多少 enum Role { Admin= 99, Commoner= 1, Pleb= 3, King= 5 } 是否有一种方法可以具体化这种关系,例如,如果有人错误地将管理员Id设置为9999,那么我的应用程序可以处理这

我的数据库中有一个表是种子表,它有两列,一个ID和一个VARCHAR角色。我知道id 99将与管理员状态相关,但我不想硬编码此值。有人建议查看枚举来实现这一点,到目前为止,我所看到的所有示例对我来说都没有意义,而且它们似乎也没有比硬编码的值好多少

enum Role
{
    Admin= 99,
    Commoner= 1,
    Pleb= 3,
    King= 5
}
是否有一种方法可以具体化这种关系,例如,如果有人错误地将管理员Id设置为9999,那么我的应用程序可以处理这个问题并按预期工作

我知道我可以试试这样的东西

Admin = dataContext.Set<Role>().First(x => x.Name == "Admin");
Admin=dataContext.Set().First(x=>x.Name==“Admin”);

但我想知道是否有一个正确的方法来做到这一点?或者有人做了不同的操作吗?

您可以在应用程序启动时加载这些值,并将它们保存在字典中

var roles = new Dictionary<int, Role>():

这就是您想要的吗?

枚举也是硬编码的。但这确实没有意义。更糟糕的是,使用enum时,所有角色都是硬编码的。但是你需要一个硬编码的值。ye这与我的想法类似,另一个选项是使用web.config并为我的每个环境转换值。我想这可能更干净?可能更干净。这取决于你将来打算如何扩展你的应用程序。我刚刚和我的团队讨论过这个问题,我们认为在数据库端正确地解决这个问题可能会更好。其他一切都只是人为错误引起的问题的解决办法
var roleForId = roles[id];
var idForAdmin = roles.FirstOrDefault(x => x.Value == Role.Admin).Key;