Dynamics CRM 2011 -使用QueryExpression获取N:1个相关实体的集合

本文关键字:1个 实体 集合 2011 CRM 使用 获取 QueryExpression Dynamics | 更新日期: 2023-09-27 18:05:10

我正在为CRM 2011部署一个自定义web服务,现在我正在概述与我们的一些实体相关的内容。我们有一个包含产品名称和类别等详细信息的自定义product实体,我们有一个agreement实体,它将product链接到客户,并包含特定于该客户的产品详细信息。agreementproduct呈N:1关系

我现在正在制作一个概述页面,该页面将显示在CRM的客户页面上,该页面应该显示该客户的所有agreement。对于这个显示,我还需要检索有关这些协议链接到的product的一些信息,这些信息将用于在概述页面上对agreement进行分组。我一直找不到任何相关的/具体的例子,我一直在试图找到一种可行的方法来查询我需要的数据。

我想象它的方式,我想使用两个查询来获得所需的数据。首先,查询获取客户的所有agreement。然后将该列表传递给第二个查询,该查询返回与第一个列表相交的所有product。这是可能使用QueryExpression,或者我需要在agreement列表上循环并为每个单独的关联运行单独的查询吗?如果可能的话,我宁愿避免FetchXML

Dynamics CRM 2011 -使用QueryExpression获取N:1个相关实体的集合

如果我理解对了你的问题,你只需要在第一个查询中为你的Product实体添加一个LinkEntity。您也可以指定要返回的Product实体的属性,但是它们将作为AliasedValues返回,因此请注意这一点。

添加到daryl的回答,你可以看到这篇关于如何链接实体的例子。MSDN在这个问题上令人困惑(至少对我来说)。

我在这里提出了一个很好的查询表达式结构,而Daryl提出了一个更紧凑的等价结构。我的当然更好。: D)

我查看了LinkEntity,但我最终在第二个查询上实现了我想用ConditionOperator.In做的事情,如下所示:

query.Criteria.AddCondition(
    new ConditionExpression(
        "myprefix_productid",
        ConditionOperator.In,
        agreementList )
);

其中agreementListGuid s的数组。在发布问题之前,我也尝试过这样做,但没有在new ConditionExpression()中包装参数,这不起作用。这可能是因为隐式方式为AddCondition函数调用了错误的重载。

其他答案中的有用链接,我也会研究它们!