使用 oDATA REST 和 JavaScript 从组织服务获取 EntityReference

Get EntityReference from Organization-Service using oDATA REST and JavaScript

我正在尝试获取 Dynamics CRM 2016(内部部署)中活动响应的客户信息。 因为我在实体表单上,所以我想对 REST 查询使用 JavaScript。

检索活动响应的信息不是问题。 但是在响应 XML 中,PartyId 的类型是 EntityReference

... <!-- more XML omitted -->
<d:PartyId m:type="Microsoft.Crm.Sdk.Data.Services.EntityReference">
          <d:Id m:type="Edm.Guid">13cb3e39-46c5-e711-80ce-005056a04f81</d:Id>
          <d:LogicalName>contact</d:LogicalName>
          <d:Name>Jane Doe</d:Name>
          <d:RowVersion m:null="true" />
        </d:PartyId>
...<!-- more XML omitted -->

所以现在的问题是,我无法使用

直接查询联系人的动态
https://example.com/OrganizationName/XRMServices/2011/OrganizationData.svc/contactSet(guid'13cb3e39-46c5-e711-80ce-005056a04f81')

我收到以下错误

<error>
<code/>
<message xml:lang="de-DE">Resource not found for the segment 'contactSet'.</message>
</error>

因为它是一个 EntityReference。

似乎没有像

这样的端点

https://example.com/OrganizationName/XRMServices/2011/OrganizationData.svc/EntityReferenceSet(guid'13cb3e39-46c5-e711-80ce-005056a04f81')

我不知道如何使用 REST 和 Javascript 检索实体引用的目标。有人知道怎么做吗?

我从 C# 框架中了解到,EntityReference 只是一个容器,它包含有关引用实体的真实信息。所以由

给出的ID
<d:PartyId m:type="Microsoft.Crm.Sdk.Data.Services.EntityReference">
          <d:Id m:type="Edm.Guid">13cb3e39-46c5-e711-80ce-

只是 EntityReference 的 ID,必须解析为联系人实体的真实 ID。但是怎么办?

OData url 区分大小写,因此不要使用 contactSet,而是使用 ContactSet 来获取结果。

https://example.com/OrganizationName/XRMServices/2011/OrganizationData.svc/ContactSet(guid'13cb3e39-46c5-e711-80ce-005056a04f81')

您应该能够使用 OData 端点查询实体:

https://example.com/OrganizationName/api/data/v8.0/contacts(13cb3e39-46c5-e711-80ce-005056a04f81)

或WCF\SOAP

https://example.com/OrganizationName/XRMServices/2011/OrganizationData.svc/ContactSet(guid'13cb3e39-46c5-e711-80ce-005056a04f81')

这两个链接在本地 D365 v9 上都可以正常工作。但是我没有环境可以直接在 CRM 2016 上测试。