dynamics-crm - 如何使用 odata 端点检索地址
问题描述
我正在尝试检索标准实体上的地址。
请求如下:
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 库。我将无法知道我将在哪个实体上工作,因此无法硬编码地址字段名称列表。
解决方案
这是查找联系人到地址关系的一种方法:
https://myOrg.api.crm.dynamics.com/api/data/v9.1/EntityDefinitions(LogicalName='customeraddress')?$select=LogicalName&$expand=ManyToOneRelationships($select=ReferencingAttribute,ReferencedEntity)
我遇到了一个错误https://myOrg.api.crm.dynamics.com/api/data/v9.1/contacts(guid)?$expand=address1_addressid
。
我查看了元数据,发现它address1_addressid
有一种主键:
考虑到尝试扩展时出现的错误消息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
.
之前的错误消息谈到了 Navigation 属性,所以我试了一下。使用名为的属性允许我从联系人中扩展地址信息:
https://myOrg.api.crm.dynamics.com/api/data/v9.1/contacts(guid)?$expand=Contact_CustomerAddress
推荐阅读
- docker - GitLab CI 中的灯塔
- javascript - 打字稿 - 类型“字符串”不可分配给类型“布尔”
- duplicates - 我在 Pymel 代码中旋转对象时遇到问题
- python - 如何在 python http.server 中同时提供文件夹和处理 POST 请求
- tensorflow - 如何减少 Tensorflow 中训练模型中的内核/过滤器数量?
- python - seaborn,如何按列绘制,不包括缺失数据
- bash - 如何在bash中传递带有标志的参数
- vb.net - 如何为 VB.NET 中的组合框赋值?
- python - 如何创建一个查询集来显示链接到某个类别的产品,该类别由每个类别 slug 显示?
- docker - 在容器创建时设置 docker 卷权限