我正在为CRM 2011部署开发自定义Web服务,现在我正在概述与我们的某些实体相关的内容。我们有一个自定义product
实体,其中包含产品名称和类别等详细信息,我们有一个agreement
实体,它将product
链接到客户并包含特定于该客户的产品详细信息。 agreement
和product
有N:1的关系。
我现在正在制作一个概述页面,该页面将显示在CRM中的客户页面上,该页面应显示该客户的所有agreement
。对于此显示,我还需要检索有关这些协议链接到的product
的一些信息,这些信息将用于对概述页面上的agreement
进行分组。我一直无法找到任何相关/具体的例子,我一直试图找到一种可行的方法来查询我需要的数据。
我想象的方式,我想使用两个查询来获取所需的数据。首先,获取客户所有agreement
的查询。然后将此列表传递给第二个查询,该查询返回与第一个列表相交的所有product
。这可能是使用QueryExpression
,还是我需要遍历agreement
列表并为每个单独的关联运行单独的查询?如果可能,我宁愿避免使用FetchXML
。
答案 0 :(得分:3)
如果我理解您的问题,您只需要在第一个查询中向您的Product实体添加LinkEntity。您也可以指定要返回的Product实体的属性,但它们将返回AliasedValues,因此请注意这一点。
答案 1 :(得分:1)
添加到Daryls答案,您可以看到this post有关如何链接实体的示例。 MSDN对这个主题感到困惑(至少对我而言)。
我在那里提出了一个很好的查询表达式结构,而Daryl提供了一个更紧凑的等价物。 (我当然更好。:D)
答案 2 :(得分:0)
我查看了LinkEntity,但我最终在第二个查询中实现了我想对ConditionOperator.In
做的事情,如下所示:
query.Criteria.AddCondition(
new ConditionExpression(
"myprefix_productid",
ConditionOperator.In,
agreementList )
);
agreementList
是Guid
的数组。我在发布问题之前尝试了这个,但没有将参数包装在new ConditionExpression()
中,但这些参数不起作用。可能这是因为隐式方法为AddCondition
函数调用了错误的重载。
在其他答案中有用的链接,我也会研究它们!