【发布时间】:2019-01-16 13:25:14
【问题描述】:
我正在 Dynamics 365 中编写元数据查询,但我认为这个问题对于任何 OData 查询都是通用的。
我的问题如下:
在 Dynamics 中,我们可以在实体中拥有多种类型的字段,例如字符串、布尔值或查找。我想编写一个查询,返回查找所寻址的实体类型。
{url}/api/data/v9.0/EntityDefinitions(LogicalName='Account')
?$select=
LogicalName
&$expand=
Attributes(
$select=
LogicalName,
AttributeType,
Targets; -- Problematic property
$filter=
AttributeType+eq+Microsoft.Dynamics.CRM.AttributeTypeCode'Lookup')
如果我在此查询中不包括对 Targets 的选择,我会得到正确的结果,即它们的 AttributeType 为 Lookup 的所有属性。
但是当我要求包含目标时,我收到一条错误消息
Could not find a property named 'Targets' on type 'Microsoft.Dynamics.CRM.AttributeMetadata
因为 Target 属性只存在于 Lookup 类型的那些 arrribute 上,因此从字符串属性中选择此列将失败并抛出此错误。
有没有办法在选择列之前先过滤查找?我发现here的评估顺序是
$filter、$inlinecount、$orderby、$skiptoken、$skip、$top、$expand、$select、$format
这正是我所需要的,除了我认为在 $expand 属性中调用时这个顺序不一样。
【问题讨论】:
标签: rest dynamics-crm odata query-string odata-v4