2

是否可以编写一个获取根实体和多个子实体的单个 FetchXML 查询?我所能做的就是1:1。

4

4 回答 4

6

除非我误解了这个问题,否则这是很有可能的。

例如,您想查找与给定帐户相关的所有联系人。这在 Crm 中由客户联系人上的父客户查找来表示。

在此处输入图像描述

<fetch mapping="logical" count="100" version="1.0">
    <entity name="account">
        <attribute name="name" />
        <link-entity name="contact" from="parentcustomerid" to="accountid">
            <attribute name="fullname" />
        </link-entity>
    </entity>
</fetch>

这为您提供了如下所示的结果集:

<resultset morerecords="0" paging-cookie="&lt;cookie page=&quot;1&quot;&gt;&lt;accountid last=&quot;{E704FAD6-2D4B-E111-9FED-00155D828444}&quot; first=&quot;{AD912122-6B3C-E111-9B37-00155D828444}&quot; /&gt;&lt;/cookie&gt;">
    <result>
        <name>RGD Mining Inc</name>
        <accountid>{E704FAD6-2D4B-E111-9FED-00155D828444}</accountid>
        <accountid.fullname>Bill Miner</accountid.fullname>
    </result>
    <result>
        <name>RGD Mining Inc</name>
        <accountid>{E704FAD6-2D4B-E111-9FED-00155D828444}</accountid>
        <accountid.fullname>Green</accountid.fullname>
    </result>
</resultset>
于 2012-09-30T18:31:41.807 回答
6

詹姆斯伍德是正确的。Fetch XML 是递​​归的,因此通过使用链接实体,您可以获得所需的信息。

例如,以下是有效的:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
  <entity name="account">
    <attribute name="name" />
    <attribute name="primarycontactid" />
    <attribute name="telephone1" />
    <attribute name="accountid" />
    <order attribute="name" descending="false" />
    <link-entity name="contact" from="parentcustomerid" to="accountid" alias="aj">
        <attribute name="firstname" />
        <attribute name="lastname" />
        <attribute name="telephone1" />
        <link-entity name="businessunit" from="businessunitid" to="owningbusinessunit" alias="ak">
            <attribute name="name" />
            <attribute name="address1_line1" />
            <attribute name="address1_line2" />
            <attribute name="address1_line3" />
            <filter type="and">
              <condition attribute="name" operator="not-null" />
            </filter>
        </link-entity>
    </link-entity>
  </entity>
</fetch>

如果您的问题确实是“是否可以编写一个获取单个根实体和多个子实体的单个 FetchXML 查询”,那么很遗憾,答案是否定的。但是,如果您能够处理根数据的重复(例如使用 SSRS 报告的分组功能),那么您所需要的完全有可能

于 2013-07-18T23:49:19.657 回答
3

不,这是不可能的。

于 2010-05-20T16:39:58.813 回答
0

我很高兴地报告这是可能的。我有一个对我很有效的解决方案。

唯一需要注意的是,如果您有多个子帐户,您将为父帐户获得多个结果。例如:

parent 1: child 1
parent 2: child 1
parent 2: child 2

这意味着您必须通过排序函数运行结果,以获取多维数组中父母下的所有子项,或者将所有帐户作为平面数组中的唯一条目获取。

而且,这只下降了一层。如果您的层次结构是多级的,则需要修改此代码。

<fetch distinct="false" mapping="logical"> 
   <entity name="account">     
        <attribute name="name" />
        <link-entity name="account"  alias="childaccount" to="accountid" from="parentaccountid"  link-type="outer">
            <attribute name="name" alias="childname" />
        </link-entity>
    </entity>           
</fetch>
于 2015-08-27T16:49:03.703 回答