我有一个数据库,其中包含一个名为'Roles'的表,其中包含'Id'和'RoleName'列。 这些是表格中的行:
“用户”表中的用户可以拥有多个角色。 我想使用LINQ代码来检查特定用户是否具有“技术人员”角色。
这是我现在的代码:
using (MyDbEntities entities = new MyDbEntities())
{
User user = entities.Users.Where(u => u.Id == userIdToFetch).Single();
// Check if user is 'Technician'
if (user.Roles.Any(role => role.Name == "Technician") == true)
{
// user IS technician - do work here
}
}
我的问题是 - 我不想将字符串“Technician”硬编码到我的代码中, 因为也许有一天,数据库中角色的名称将变为“Tech”。
我看过使用'资源',但这并不好,因为更改资源中的字符串意味着重新编译项目。
我不想在包含此信息的配置文件中添加一个部分, 因为在我看来它过度杀人......
有什么建议吗?
答案 0 :(得分:2)
你可以把它作为一个设置,这意味着你可以修改配置文件,虽然这将是基于每个用户。
你可以创建一个dll来保存字符串,然后引用它,然后更新只意味着重新部署dll
您可以将字符串放入文件中,并将其加载到那里,同时记住您还必须部署该文件。
答案 1 :(得分:1)
我使用一个表来存储所有不同的角色,并将角色的ID与用户的角色ID相关联。这样,只要角色ID保持不变,您就可以根据需要更改角色的名称。
答案 2 :(得分:0)
我认为配置文件或资源正是您想要使用的。我想这只是找到正确平衡的问题:
要么避免配置文件的复杂性,要么需要编译,要么避免编译,而是找到其他地方(某种配置文件,无论是文本文件,还是带有常量的.dll)可以阅读或其他东西)来存储它。无论如何,你需要创建某些东西来阅读它。
答案 3 :(得分:0)
您可以通过在解决方案中放置Roles的XML文件或在.config文件中添加enteries来实现此目的。