Dynamics 365 OData获得1:N链接的实体

问题描述

我有account类型的实体,当我在Dyn365中查看时,它有一个包含相关实体列表视图的部分。如何从OData API获取这些相关实体?

我可以查询api/data/v9.1/account,但相关实体不会出现在结果json中的任何地方。

如果我对相关实体执行相同操作,则该帐户不会出现在任何位置。如何获得这两种类型的实体之间的链接?使用OData API。

我已经尝试过类似/accounts?$expand=contact($select=foo)之类的事情,但这只是说联系人属性在帐户实体上不存在,这是正确的。但是联系不是属性,而是实体类型。

解决方法

这可能就是您想要的。客户与联系人之间的1:N关系为contact_customer_accounts

所有帐户及其相关联系人:

https://crmdev.crm.dynamics.com/api/data/v9.1/accounts?$select=name&$expand=contact_customer_accounts($select=fullname)

具有相关联系人的特定帐户:

https://crmdev.crm.dynamics.com/api/data/v9.1/accounts(73C84814-729B-EA11-A811-000D3A370DB6)?$select=name&$expand=contact_customer_accounts($select=fullname)
,

解决方案是使用以下网址获取所有关系的名称。

https://<company>.crm.dynamics.com/api/data/v9.1/RelationshipDefinitions?$select=SchemaName

结果是每个关系的以下行的数组。

{"@odata.type":"#Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata","SchemaName":"aaa_bbb","MetadataId":"<guid>"},

然后使用这些名称,特别是SchemaName查询参数中的$expand属性。

https://crmdev.crm.dynamics.com/api/data/v9.1/accounts?
$select=<whatever>&
$expand=aaa_bbb($select=<properties from linked entity>)

要弄清楚什么关系实际上可以满足您的需要,如果您无法猜测到底是什么,则需要读更多的内容,而只需阅读SchemaName即可;如果您知道如何访问,可以通过GUI在Dynamics中进行查找。 。我不知道。

RelationshipDefinition包含其他属性,例如ReferencedEntity ReferencingEntity,可用于确定您是否建立了正确的关系。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...