具有多个联接的 Dynamics 365 OrganizationServiceContext Linq 查询
Dynamics 365 OrganizationServiceContext Linq Query with multiple Joins
我运行遇到一个问题运行我的大部分查询。我可以生成一个 link 查询,一次仅连接到一个相关实体。但是当我 运行 一个具有多个连接的 LINQ 查询时,如下例所示,我得到 "Sequence contains no elements" 错误。
var query =
(
from permission in context.CreateQuery<ServiceModel.Types.idoe_permission>()
join contact in context.CreateQuery<ServiceModel.Types.Contact>()
on permission.idoe_contact_idoe_permission.Id equals contact.Id
join corporation in context.CreateQuery<ServiceModel.Types.idoe_corporation>()
on permission.idoe_idoe_corporation_idoe_permission.Id equals corporation.Id
join role in context.CreateQuery<ServiceModel.Types.idoe_role>()
on permission.idoe_idoe_role_idoe_permission.Id equals role.Id
where contact.idoe_ADB2CID == request.UserId
select new { Corporation = corporation, Role = role }
).ToList();
我一次只能"join"一个实体。我看到的其他示例允许多个连接,但我无法让它工作。
有什么建议吗?
您似乎在联接中使用关系名称而不是查找字段名称。使用查找字段名称可能看起来像这样:
var query = (from permission in context.CreateQuery<ServiceModel.Types.idoe_permission>()
join contact in context.CreateQuery<ServiceModel.Types.Contact>() on permission.idoe_contactid.Id equals contact.Id
join corporation in context.CreateQuery<ServiceModel.Types.idoe_corporation>() on permission.idoe_corporationid.Id equals corporation.Id
join role in context.CreateQuery<ServiceModel.Types.idoe_role>() on permission.idoe_roleid.Id equals role.Id
where contact.idoe_ADB2CID == request.UserId
select new { Corporation = corporation, Role = role }).ToList() ;
我运行遇到一个问题运行我的大部分查询。我可以生成一个 link 查询,一次仅连接到一个相关实体。但是当我 运行 一个具有多个连接的 LINQ 查询时,如下例所示,我得到 "Sequence contains no elements" 错误。
var query =
(
from permission in context.CreateQuery<ServiceModel.Types.idoe_permission>()
join contact in context.CreateQuery<ServiceModel.Types.Contact>()
on permission.idoe_contact_idoe_permission.Id equals contact.Id
join corporation in context.CreateQuery<ServiceModel.Types.idoe_corporation>()
on permission.idoe_idoe_corporation_idoe_permission.Id equals corporation.Id
join role in context.CreateQuery<ServiceModel.Types.idoe_role>()
on permission.idoe_idoe_role_idoe_permission.Id equals role.Id
where contact.idoe_ADB2CID == request.UserId
select new { Corporation = corporation, Role = role }
).ToList();
我一次只能"join"一个实体。我看到的其他示例允许多个连接,但我无法让它工作。
有什么建议吗?
您似乎在联接中使用关系名称而不是查找字段名称。使用查找字段名称可能看起来像这样:
var query = (from permission in context.CreateQuery<ServiceModel.Types.idoe_permission>()
join contact in context.CreateQuery<ServiceModel.Types.Contact>() on permission.idoe_contactid.Id equals contact.Id
join corporation in context.CreateQuery<ServiceModel.Types.idoe_corporation>() on permission.idoe_corporationid.Id equals corporation.Id
join role in context.CreateQuery<ServiceModel.Types.idoe_role>() on permission.idoe_roleid.Id equals role.Id
where contact.idoe_ADB2CID == request.UserId
select new { Corporation = corporation, Role = role }).ToList() ;