我正在尝试获取基于特定项目向用户注册的设备的列表。
我的架构如下:
我的Users和Projects表之间存在多对多关系,这是通过称为ProjectUsers的联接表完成的。我的设备表通过UserId字段与用户连接。
我需要根据项目ID返回设备清单,但是我很难使用Join<>
,因为我的上下文中不存在ProjectUsers实体。
最终这是我需要的查询,当我在SSMS中运行它时,我得到了想要的结果:
select d.* from devices d
join users u on u.id = d.userid
join projectusers pu on pu.userid = u.id
join projects p on p.id = pu.projectid
where p.id = 7
这是我的模特,如果有帮助的话: 用户:
public class User : IInt32Identity
{
public int Id { get; set; }
public string UserEmail { get; set; }
public List<ProjectUsers> ProjectUsers { get; set; }
...
}
项目:
public class Project : IInt32Identity
{
public int Id { get; set; }
public string ProjectName { get; set; }
public List<ProjectUsers> ProjectUsers { get; set; }
...
}
ProjectUsers:
public class ProjectUsers
{
public int UserId { get; set; }
public User User { get; set; }
public int ProjectId { get; set; }
public Project Project { get; set; }
}
设备:
public class Device : IInt32Identity
{
public int Id { get; set; }
public string Name { get; set; }
public int UserId { get; set; }
...
}