类型“Microsoft.Dynamics.CRM.entity”上的属性“字段”不是导航属性或复杂属性。只能扩展导航属性

soc*_*pet 6 url microsoft-dynamics dynamics-crm odata dynamics-crm-365

在 Dynamics 365 中遇到这个问题,看起来应该可以正常工作,但给了我:

类型“Microsoft.Dynamics.CRM.biz_productbuyer”上的属性“_biz_buyerlookupid_value”不是导航属性或复杂属性。只能扩展导航属性。

我可以复制此处提供的示例,它可以找到:

https://learn.microsoft.com/en-us/dynamics365/customer-engagement/developer/webapi/query-data-web-api#retrieve-lated-entities-by-expanding-navigation-properties

基本上尝试阅读相关领域,这样我就不必再进行查询。

Product Buyer因此,我在一个名为或 的自定义实体中有一个查找字段,biz_productbuyers用于引入Contact与其关联的名称Product

biz_buyerlookupid当您查看实体的字段时,将调用该字段。

当您使用 Web API 时,它表示biz_buyerlookupid该实体中不存在任何被调用的内容。把它扔掉$select=并把它打开,这样我就可以搜索它。

有一个领域叫_biz_buyerlookupid_value. 我把它放进去$select,它返回:

{
    @odata.etag: "W/"20636204"",
    _biz_buyerlookupid_value: "906595fd-2a83-dc11-ae20-000feaed3854",
    biz_productbuyerid: "8be67d14-9efb-4335-98c7-000451a50cef",
}
Run Code Online (Sandbox Code Playgroud)

显然这两个字段之间存在某种关系,但听起来像是_biz_buyerlookupid_value对 的查找Contacts。确实_biz_buyerlookupid_value与实体中的实际值相对应contact,即单个contactid。我检查了。已尝试以下所有方法并收到上述消息:

/api/data/v9.0/biz_productbuyers?$select=_biz_buyerlookupid_value&$expand=_biz_buyerlookupid_value($select=contactid, fullname)

/api/data/v9.0/biz_productbuyers?$select=_biz_buyerlookupid_value&$expand=biz_productbuyerid($select=contactid, fullname)

/api/data/v9.0/biz_productbuyers?$select=biz_productbuyerid&$expand=biz_productbuyerid($select=contactid, fullname)

/api/data/v9.0/biz_productbuyers?$select=biz_productbuyerid&$expand=_biz_buyerlookupid_value($select=contactid, fullname)
Run Code Online (Sandbox Code Playgroud)

那么这是怎么回事呢?据我所知,它应该尽可能地从实体中引入contactid和引入。fullnamecontact

jas*_*ipt 11

我的理解是,该_[field]_value项目将立即为您提供关联项目的 GUID。

要使用,$expand您必须使用架构名称,因此它应该如下所示:

$expand=biz_buyerlookupid($select=contactid, fullname)
Run Code Online (Sandbox Code Playgroud)

并注意biz_buyerlookupid区分大小写。

您可以查看 CRM 实例的元数据以获得正确的大小写:https://[org].crm.dynamics.com/api/data/v9.0/$metadata

  • 奖励:对于将来需要它的任何人,您可以组合多个扩展,例如“$expand=schema_name1($select=field),schema_name2($select=field)”。 (2认同)