【问题标题】:Get EntityReference from Organization-Service using oDATA REST and JavaScript使用 oDATA REST 和 JavaScript 从组织服务获取 EntityReference
【发布时间】:2020-03-23 13:13:43
【问题描述】:

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

检索活动响应的信息不是问题。 但在响应 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。

好像没有类似的Endpoint

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。但是怎么做呢?

【问题讨论】:

    标签: dynamics-crm microsoft-dynamics dynamics-crm-2013


    【解决方案1】:

    您应该能够使用 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 本地部署上都能正常工作。但我没有 env 可以直接在 CRM 2016 上进行测试。

    【讨论】:

    • 我现在尝试使用 OData 端点。该 ID 似乎不是联系人 guid。我认为,我仍然需要获取 EntityReference 本身,然后是它指向的信息。当然,我可能是错的
    • 从你的 XML 摘录中它是联系人,但你也可以检查 activityparty 实体以获取此类 ID。 docs.microsoft.com/en-us/dynamics365/customerengagement/…
    【解决方案2】:

    OData url 区分大小写,因此请使用 ContactSet 代替 contactSet 来获取结果。

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

    【讨论】:

    • 嗨阿伦,谢谢您的评论。不幸的是,这似乎并不能解决问题。错误消息仍然显示 Resource not found for the segment 'ContactSet'. 我想我仍然需要获取党的信息。任何想法如何得到它?
    • 试图记住 2011 端点,Guid 是否需要花括号?
    • 嗨@Daryl,谢谢你的评论。我不认为它需要大括号。其他查询在没有大括号的情况下确实成功。所以我认为查询不成功,因为给定的 PartyId -> Id 是 EntityReference 的 ID,必须解决。但我不知道怎么做:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 2012-08-05
    相关资源
    最近更新 更多