2

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

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

按照我的想象,我想使用两个查询来获取所需的数据。首先,一个查询获取agreement关于客户的所有 s。然后将此列表传递给第二个查询,该查询返回product与第一个列表相交的所有 s。这是否可以使用 a QueryExpression,或者我是否需要遍历agreement列表并为每个单独的关联运行单独的查询?FetchXML如果可能的话,我宁愿避免。

4

3 回答 3

3

如果我正确理解您的问题,您只需在第一个查询时将LinkEntity添加到您的 Product 实体中。您还可以指定要返回的 Product 实体的属性,但它们会以AliasedValues的形式返回,因此请注意这一点。

于 2013-03-21T12:37:29.510 回答
1

添加到 Daryls 的答案中,您可以查看这篇文章以获取有关如何链接实体的示例。MSDN 在这个主题上令人困惑(至少对我而言)。

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

于 2013-03-21T21:33:50.430 回答
0

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

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

agreementLists的数组在哪里Guid。我在发布问题之前也尝试了这个,但没有将参数包装在 中new ConditionExpression(),这不起作用。大概这是因为隐式方式为AddCondition函数调用了错误的重载。

不过,其他答案中的有用链接,我也会研究一下!

于 2013-04-04T10:50:52.890 回答