Dynamics 365 OData正在获取1:N个链接实体



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

我可以查询api/data/v9.1/account,但相关实体不会出现在生成的json中的任何位置。

如果我对相关实体也这样做,则该帐户不会出现在任何位置。如何获取这两种类型实体之间的链接?使用OData API。

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

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

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

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

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

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

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

要弄清楚什么关系真正能满足你的需求,如果你猜不到是什么,你需要阅读更多的SchemaName,或者如果你知道如何使用并有访问权限,你需要通过GUI在Dynamics中查找它。我没有。

RelationshipDefinition包含其他属性,如ReferencedEntityReferencingEntity,可用于确定您是否获得了正确的关系。

也许,这就是您想要的。帐户和联系人之间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)

最新更新