我有一个用户表、一个角色表和一个交叉引用表 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 的新手,我正在尝试用 Entities 来做这件事,但遇到了一些麻烦。我正在使用 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();