我想知道这在Linq中是否可行:我有三张桌子:
Request
--id
--Adress
--Description
Nav.Properties:
-- RequestStatus
RequestStatus
--RequestId
--PubDate
--StatusTypeId
Nav.Properties:
-- Request
-- StatusType
StatusType
--Id
--StatusTypeDescription
Nav.Properties
-- RequestStatus
在Linq中,我可以通过以下方式将前两个表连接在一起:
var RequestWithStatus = dbContext.Requests.Include("RequestStatus").ToList<fullRequest>();
但是。。。我想要的是StatusTypeDescription列也包含在这个查询中(所以在第三个表上使用联接)。
如果一个请求实例可以有一个RequestStatus,而一个RequestState实例可以只有一个StatusType,那么您可以简单地执行
var requestList = dbContext.Requests.Include("RequestStatus.StatusType").ToList();
Include(在System.Data.Entity中)也有一个"lambda"(Expression>)重载(不确定它是否能与mysql一起工作)
var requestList = dbContext.Requests.Include(m => m.RequestStatus.StatusType).ToList();
您的所有数据都将显示在列表中(急切加载)。
然后您可以访问描述
var firstRequest = requestList.First();
var requestDescription = firstRequest.Description;
var statusTypeDescription = firstRequest.RequestStatus.StatusType.Description;
或更安全的
var statusTypeDescription = firstRequest.RequestStatus != null && firstRequest.RequestStatus.StatusType != null
? firstRequest.RequestStatus.StatusType.Description
: string.Empty;