【发布时间】:2017-01-30 10:48:28
【问题描述】:
我正在尝试使用 Linq 在查询中加入 3 个表,以从所有 3 个表中获取数据。下面是表格方案的图像:
查询应选择:SewagePlantName、CompanyName 和 Duty
此外,我需要将 SewagePlantId 限制为以下 ID 列表:
var sewagePlantIds = UnitOfWork.GetAll<UserGroup>()
.Where(group => group.Id == webAppPrincipal.GroupId)
.SelectMany(group => group.SewagePlantId).Select(sewageplant => sewageplant.Id).ToList();
我对加入 3 个表的顺序以及在哪里/如何将 SewagePlantId 限制为给定列表有困难。
【问题讨论】:
-
这是一个糟糕的设计。在 entities 之间使用 relations 并让 ORM 做任何需要的连接。
SewagePlant应该有一个Company属性。Company应该有一个Duties集合。加载单个Company即可访问所有相关对象 -
但在这种情况下,SewagePlant 有 n 家公司,而不是相反。
-
所以也把它做成一个集合。只是不要滥用您的 ORM。创建正确的关系,不要像使用 SQL 一样尝试加入。
标签: c# asp.net-mvc entity-framework linq