crm webapi中的多级扩展

multiple level of expansion in crm webapi

我有一个名为 medicalcase 的实体

每个医疗案例都有一个子网格,N:N 与名为 mcfamily 的实体的关系

每个 mcfamily 都有 Father、Mother、Child 字段,这些字段是查找联系人字段

现在如果我调用 webapi

http://serverurl/api/data/v8.0/new_medicalcase(caseid)?$expand=new_medcase_mcfamily

我得到 new_father_value,但我想展开父亲查找并获取联系人姓名。我该怎么做?

我试过了

http://serverurl/api/data/v8.0/new_medicalcase(caseid)?$expand=new_medcase_mcfamily($expand=new_father($select=fullname))

但是它说

navigation property can't be expanded. Multiple levels of expansion aren't supported.

您必须通过再次请求父亲联系人来手动扩展。

如果您使用 FetchXml 查询发出请求,您应该能够通过一次调用进行双重扩展。 Here 是如何通过 WebAPI 发送提取查询的示例(太长,无法在此处复制)。

更新以回应您的评论

这是一个提取查询,可以在一次调用中检索您所有父亲的姓名。它采用以下逻辑名称:

  • 医疗案例实体:new_medicalcase
  • mcfamily 实体:new_mcfamily
    • 查找父亲联系方式:new_fatherid
  • N:N 实体:new_medicalcase_new_mcfamily
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
  <entity name="contact" >
    <attribute name="fullname" />
    <link-entity name="new_mcfamily" from="new_fatherid" to="contactid">
      <link-entity name="new_medicalcase_new_mcfamily" from="new_mcfamilyid" to="new_mcfamilyid" intersect="true">
        <link-entity name="new_medicalcase" from="new_medicalcaseid" to="new_medicalcaseid">
          <filter>
            <condition attribute="new_medicalcaseid" operator="eq" value="FAEEE5D8-D67C-E511-80E6-3863BB3CA578" />
          </filter>
        </link-entity>
      </link-entity>
    </link-entity>
  </entity>
</fetch>

要使查询正常工作,请使用 XrmToolbox 附带的 FetchXml Tester 工具。使其正常工作后,请参考我之前回答中的 link 以使用 WebAPI 执行提取查询。