如何在C#项目中存储可配置的字符串?

时间:2012-05-16 09:55:30

标签: c# configuration settings

我有一个数据库,其中包含一个名为'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 个答案:

答案 0 :(得分:2)

你可以把它作为一个设置,这意味着你可以修改配置文件,虽然这将是基于每个用户。

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

您可以将字符串放入文件中,并将其加载到那里,同时记住您还必须部署该文件。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您可以通过在解决方案中放置Roles的XML文件或在.config文件中添加enteries来实现此目的。