Users テーブル、Roles テーブル、および次の列を持つ相互参照テーブル Users_Roles があります。
User_ID Role_ID Beamline_ID Facility_ID Laboratory_ID
Beamline_ID、Facility_ID、Laboratory_ID は Role_ID に応じてのみ入力されます。Role_ID が 2 (「ラボ管理者」) の場合、Laboratory_ID にエントリがあります。
このテーブルの特定の行の Laboratory_ID を取得する方法を見つけようとしています。たとえば、私は User_ID = 1 を持っていることを知っています。User_ID = 1 および Role_ID = 2 (「ラボ管理者」) の Laboratory_ID を取得したいと考えています。
SQL を扱う場合、これは明らかに簡単ですが、私は Entity Framework を初めて使用し、エンティティでこれを実行しようとしていますが、問題が発生しています。私はMVCを使用しているので、コントローラーでこれを行いました:
User user = new User();
user.GetUser(User.Identity.Name);
var labID = user.Users_Roles.Where(r => r.Role_ID == 2);
Role = Lab Admin の場合、そのユーザーの「行」を取得する必要がありますが、Labortory_ID 列を取得する方法がわかりません。多分それは次のようになると思いました:
var labID = user.Users_Roles.Where(r => r.Role_ID == 2).Select(l => l.Laboratory_ID);
しかし、それは正しくありません。どんな助けでも大歓迎です。
編集:私はデータベースの最初のアプローチを使用しており、DBContext を使用しています。したがって、通常、次のようにコンテキストにアクセスします。
var context = new PASSEntities();