如何使用odata端点检索地址

时间:2019-03-25 13:24:09

标签: dynamics-crm odata dynamics-crm-365

我正在尝试检索标准实体上的地址。

请求如下:

https://mycrm.api.crm4.dynamics.com/api/data/v9.1/contacts(guid)

在此示例中,我获得了所有字段,但是我感兴趣的字段是address1_addressid,它似乎是Guid,引用了一些记录,但是在“很多我使用以下命令检索到一个“关系列表:

https://mycrm.api.crm4.dynamics.com/api/data/v9.1/EntityDefinitions(LogicalName='contact')?$select=LogicalName&$expand=ManyToOneRelationships($select=ReferencingAttribute,ReferencedEntity)

由于我正在使用通用NetStandard 2.0库,因此我想以通用方式检索这些地址。我将无法知道我将在哪个实体上工作,因此将无法对地址字段名称列表进行硬编码。

1 个答案:

答案 0 :(得分:2)

这里是查找“联系地址”关系的一种方法:

https://myOrg.api.crm.dynamics.com/api/data/v9.1/EntityDefinitions(LogicalName='customeraddress')?$select=LogicalName&$expand=ManyToOneRelationships($select=ReferencingAttribute,ReferencedEntity)

AddressRelationship

我遇到https://myOrg.api.crm.dynamics.com/api/data/v9.1/contacts(guid)?$expand=address1_addressid错误。

我查看了元数据,发现address1_addressid具有一种主键:
PrimaryKey

正常的查询字段具有一种查询类型: Lookup

考虑到尝试扩展address1_addressid时出现的错误消息,我认为问题是address1_addressid的数据类型。

  

类型为“ Microsoft.Dynamics.CRM.contact”的属性“ address1_addressid”   不是导航属性或复杂属性。仅导航   属性可以扩展。

您似乎不必使用$expand来获取地址详细信息,而必须另外打电话:
https://myOrg.api.crm.dynamics.com/api/data/v9.1/customeraddresses(guid)

更新
通过以下查询来查看完整的联系地址关系:https://myOrg.api.crm.dynamics.com/api/data/v9.1/EntityDefinitions(LogicalName='customeraddress')?$select=LogicalName&$expand=ManyToOneRelationships

我发现ReferencedEntityNavigationPropertyName设置为Contact_CustomerAddress

fullRelationship

之前,该错误消息讨论了Navigation属性,因此我尝试了一下。使用名为的属性,我可以从联系人中扩展地址信息:

https://myOrg.api.crm.dynamics.com/api/data/v9.1/contacts(guid)?$expand=Contact_CustomerAddress

有趣的是,扩展该导航属性将返回所有3个客户地址:
Addresses