0

我有一个数据库,其中包含一个名为“Roles”的表,其中包含“Id”和“RoleName”列。这些是表中的行:

  • GUID1管理员
  • GUID2系统
  • GUID3技术员
  • GUID4正常

“用户”表中的用户可以拥有多个角色。我想要 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”。

我看过使用“资源”,但这并不好,因为更改资源中的字符串意味着重新编译项目。

我不想在包含此信息的配置文件中添加一个部分,因为在我看来这太过分了......

有什么建议么 ?

4

4 回答 4

2

您可以将其作为设置放入,这意味着您可以修改配置文件,尽管这将基于每个用户。

您可以创建一个 dll 来保存字符串,然后引用它,那么更新只会意味着重新部署 dll

您可以将字符串放入文件中,然后从那里加载它们,记住您还必须部署文件。

于 2012-05-16T10:32:01.230 回答
1

我将使用一个表来存储所有不同的角色并将角色的 ID 与用户的角色 ID 相关联。这样,只要角色 ID 保持不变,您就可以随意更改角色的名称。

于 2012-05-16T09:59:00.680 回答
0

我认为配置文件或资源正是您想要使用的。我想这只是找到正确平衡的问题:

要么避免配置文件的复杂性,但需要编译,要么避免编译,但在其他地方找到(某种配置文件,无论是文本文件,还是带有可以读取的常量的 .dll,或其他东西)来存储它。无论如何,您都需要创建一些东西来阅读它。

于 2012-05-16T10:36:22.907 回答
0

您可以通过在解决方案中放置角色的 XML 文件或在 .config 文件中添加条目来执行此操作。

于 2012-05-16T10:46:18.540 回答