0

「Id」列と「RoleName」列を持つ「Roles」というテーブルを持つデータベースがあります。テーブルの行は次のとおりです。

  • 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」に変更される可能性があるためです。

「Resources」の使用を検討しましたが、リソース内の文字列を変更するとプロジェクトが再コンパイルされるため、これは良くありません。

この情報を保持するセクションを構成ファイルに追加したくありません。

助言がありますか ?

4

4 に答える 4

2

設定として入れることができます。つまり、構成ファイルを修正できますが、それはユーザーごとになります。

文字列を保持する dll を作成し、それを参照すると、更新は dll の再デプロイのみを意味します。

文字列をファイルに入れ、そこからロードすることもできますが、ファイルも展開する必要があることに注意してください。

于 2012-05-16T10:32:01.230 に答える
1

さまざまなロールをすべて格納するテーブルを使用し、ロールの ID をユーザーのロール ID に関連付けます。そうすれば、ロール ID が同じである限り、ロールの名前を好きなだけ変更できます。

于 2012-05-16T09:59:00.680 に答える
0

これを行うには、ソリューションにロールの XML ファイルを配置するか、.config ファイルにエントリを追加します。

于 2012-05-16T10:46:18.540 に答える
0

構成ファイルまたはリソースのいずれかがまさに使用したいものだと思います。正しいバランスを見つけることの問題だと思います:

構成ファイルの複雑さを回避してコンパイルを必要とするか、コンパイルを回避して別の場所を見つけます (テキスト ファイルであるか、読み取り可能な定数を含む .dll であるかに関係なく、ある種の構成ファイル、いずれにせよ、それを読み取るために何かを作成する必要があります。

于 2012-05-16T10:36:22.907 に答える