2010-10-28 105 views
7

我正在使用FetchXml来查询CRM 4.0。我们有一个特殊情况需要在CRM实体之间进行复合连接。 FetchXml schema指示允许多个链接实体元素,并且它还指示可以将多个过滤器/条件元素添加到链接实体。我面临的问题是condition元素的value属性看起来不允许实体/列名。它期望一个明确声明的值。是否可以在Microsoft Dynamics CRM 4.0中使用FetchXml进行组合连接?

例如,FetchXml让您指定这样的:

<link-entity name='myentity' from='column1' to='column2'/> 

...这确实的T-SQL相当于此:

JOIN myentity on column1 = column2 

它可以让你指定此:

<link-entity name='myentity' from='column1' to='column2'> 
    <filter type='and'> 
     <condition attribute='column3' operator='eq' value='myvalue' /> 
    </filter> 
</link> 

......这是T-SQL的等价物:

JOIN myentity on column1 = column2 AND column3 = 'myvalue' 

FetchXml没有出现,然而,提供了这样一个等价的:

JOIN myentity on column1 = column2 AND column3 = column4 

注意区别。 FetchXml提供了连接中的条件,但似乎提供了一个复合连接,也就是跨多个列的连接。

有没有人在网络空间能够使用CRM 4.0中的FetchXml进行复合连接?谢谢!

的更多信息:

我打猎使用FetchXml做到这一点的答案 - 不是SQL或QueryExpression语法。上面的SQL只是为了解释这个概念。

回答

6

不,它不允许这样做。当涉及到任何非基本的连接时,读取XML相当有限。如果我很好奇,我通常使用Stunnware Tools来测试我的查询。如果它没有暴露在那里可能无法完成。

不幸的是,在这些情况下,我通常最终(被迫进入)采取多种查询方式来解决问题。

我知道你说你对此不感兴趣 - 但我很肯定QueryExpression不会处理它。根据我的经验,它只提供了fetchxml功能的一个子集。

+0

同意。在我发布这个问题后,我最终尝试了多个查询......并使用LINQ将两个结果集合到我所需要的中。幸运的是,LINQ *支持跨多列的连接! LINQ解决方案干净可读。 – WiregrassCoder 2010-11-02 11:57:30

+0

哦,是吗?是使用新的高级开发人员扩展(Microsoft.Xrm.Client.sdk)和使用CrmSvcUtil.exe生成的类吗?不幸的是我们的解决方案有太多的自定义实体/关系(某些东西),我还没有能够切换到这个(超时)。据说他们将允许你在将来设置超时时间。 – 2010-11-02 18:34:05

相关问题