Dynamics CRM中2011 - 入门设定的N:1个的相关实体QueryExpression
我工作的一个自定义Web服务的CRM 2011的部署,现在我正在做这涉及到我们的一些实体进行了概述。我们有一个自定义的product
实体,其中包含产品名称和类别等详细信息,我们有一个agreement
实体,该实体将product
链接到客户,并包含特定于该客户的产品详细信息。 agreement
和product
具有N:1的关系。Dynamics CRM中2011 - 入门设定的N:1个的相关实体QueryExpression
我现在做的是将客户页面CRM,这应该对顾客显示所有agreement
S于显示的概述页。对于此显示,我还需要检索有关这些协议链接到的product
的一些信息,这些信息将用于在概览页面上对agreement
进行分组。我一直无法找到任何相关/具体的例子,我试图找到一个可行的方式来查询我需要的数据。
我想象的方式,我想用两个查询来获取所需的数据。首先,查询获取客户上的所有agreement
。然后将该列表传递给第二个查询,该查询返回与第一个列表相交的所有product
。这可能使用QueryExpression
,还是我需要遍历agreement
列表并针对每个单独的关联运行单独的查询?如果可能,我宁愿避免FetchXML
。
我看着LinkEntity,但我最终实现了我想要的东西。第二次查询与ConditionOperator.In
做的,是这样的:
query.Criteria.AddCondition(
new ConditionExpression(
"myprefix_productid",
ConditionOperator.In,
agreementList)
);
凡agreementList
是一个数组Guid
s。在发布问题之前,我也尝试了这一点,但是没有包装new ConditionExpression()
中的参数,这些参数都无效。大概这是因为暗含的方式为AddCondition
函数调用了错误的超载。
其他答案中的有用链接,但我也会考虑它们!
添加到Daryls答案,你可以看到this post关于如何链接实体的例子。 MSDN对这个主题感到困惑(至少对我来说)。
我提出了一个很好的查询表达式结构,而Daryl提出了一个更紧凑的等价表达式。 (我的是当然更好:d)
他们**必须**返回为* AliasedEntity *实例吗?如果我们不使用别名 - 只是返回,然后默认命名?链接为+1。 – 2013-03-21 21:32:40
@KonradViltersten,如果您想要使用Query Expressions从多个实体返回属性,那么不是来自主实体的任何属性将作为别名值返回。名称可以相同,但返回值的类型将为AliasedValues。 – Daryl 2013-03-22 01:08:32
我添加了一个扩展方法来处理,然后变得非常方便,我忘记了后面的代码。多么尴尬...... :) – 2013-03-22 08:28:10