1

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();
4

1 に答える 1