如何检索实体的单值导航属性?

How to retrieve single-valued navigation properties for an entity?

我想更新指定实体的父关系。问题是当我查询 N:1 引用时,我得到的引用属性并不总是单值导航 属性。我不知道如何区分引用帐户或联系人实体的属性 parentcustomerid。所以问题是:我怎样才能正确地为我指定的实体获得单值导航 属性 以便能够使用对 PATCH api/data/v9.0/contacts({id}) 的请求更新它与 body:

{"single-valued navigation property@odata.bind" : "/{accounts or contacts}({id})"}

创建 HTTP 请求时,将 Prefer: odata.include-annotations="*" 添加到您的 HTTP 请求 Headers。这样,响应不仅会有一个带有 Id 的 _[Field Name]_value 字段,还有一个 _[Field Name]_value@Microsoft.Dynamics.CRM.lookuplogicalname 与您查找的逻辑名称。

这是查询特定联系人的 parentcustomerid 的请求的响应示例,没有 header:

{
"@odata.context": "https://[Organization URI]/api/data/v9.0/$metadata#contacts(_parentcustomerid_value)",
"value": [
    {
        "_parentcustomerid_value": "bdeb86af-7e1c-e811-a837-000d3ac085f9",
        "contactid": "b050f3bb-dbf7-e811-a98a-000d3ac02bae"
    }
]

}

这是对添加了 header 的同一请求的响应示例:

{
"@odata.context": "https://[Organization URI]/api/data/v9.0/$metadata#contacts(_parentcustomerid_value)",
"value": [
    {
       "_parentcustomerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "parentcustomerid_account",
        "_parentcustomerid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "account",
        "_parentcustomerid_value": "bdeb86af-7e1c-e811-a837-000d3ac085f9",
        "contactid": "b050f3bb-dbf7-e811-a98a-000d3ac02bae"
    }
]

}