共用方式為


使用 Web API 關聯和取消關聯表格列

您可以使用表格定義之間存在的關係,將表格列中的個別記錄與其他記錄相關聯。 在 OData 中,關聯性會以導覽屬性表示。

您可以探索 $metadata 服務文件中存在哪些導覽屬性。 請參閱 Web API 導覽屬性。 關於現有的 Dataverse 資料表,請參閱 Web API 實體類型參考

,針對每種實體類型,請參閱列出的單值值與集合值導覽屬性。

下表描述了 Dataverse 中資料表之間的三種關聯性類型。

類型 Description Example
一對多 一筆記錄可以有許多與之相關聯的記錄。 帳戶記錄可以在contact_customer_accounts中有許多連絡人記錄。
多對一 許多記錄可以與一筆記錄相關聯。

多對一關係是對一對多關係的反映。 只有唯一的關係。
可以使用單一值導覽屬性多個parentcustomerid_account記錄與單一帳戶記錄相關聯。
多對多 許多記錄可以與許多記錄相關聯。 每個 安全角色 都可能包含對 系統使用者 定義的參照。
這兩個資料表都有 systemuserroles_association 集合型導覽屬性。

使用單一值導覽屬性

對於一對多或多對一關聯中的方現有記錄,您可以設定 URI 參照來與另一筆記錄建立關聯。 執行此動作最簡單且最常見的方式是將 @odata.bind 註解附加至單一值導覽屬性的名稱,然後在 PATCH 要求中將值設定為其他記錄的 Uri。

與單值導覽屬性建立關聯。

例如,利用單值導覽屬性將聯絡記錄與parentcustomerid_account記錄關聯:

要求:

PATCH [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "parentcustomerid_account@odata.bind": "accounts(ce9eaaef-f718-ed11-b83e-00224837179f)"
}

回應:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

如同 建立時的關聯資料表列所述,你也可以用同樣方式將新紀錄與現有紀錄關聯。

透過使用單一值導航屬性來解除關聯

要解除關聯,請將 值設為 null。

要求:

PATCH [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "parentcustomerid_account@odata.bind": null
}

回應:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

當你用這種方法解離時,不要加上 @odata.bind 註解。 使用單值導航屬性的名稱:

要求:

PATCH [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "parentcustomerid_account": null
}

回應:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

其他資訊: 基本更新

其他方法

你也可以用其他方法,用單一值導航特性達成先前描述的相同結果。

請使用以下 PUT 請求來設定單值導航屬性的 parentcustomerid_account 值:

要求:

PUT [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)/parentcustomerid_account/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.id": "[Organization URI]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)"
}

回應:

HTTP/1.1 204 NoContent
OData-Version: 4.0

備註

設定 值 @odata.id時必須使用絕對網址。

要移除該引用,請使用此 DELETE 請求:

要求:

DELETE [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)/parentcustomerid_account/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

回應:

HTTP/1.1 204 NoContent
OData-Version: 4.0

使用集合值導航屬性

在 OData 中,多對多關聯的兩邊都有集合型導覽屬性。 對於一對多和多對一關聯,「一」方的資料表會有集合值導覽屬性。 使用集合值的導航屬性時,處理這些關係的方式並無差異。 本節說明如何處理集合值的導覽屬性,適用於任何類型的關係。

將記錄新增至集合

下列範例顯示如何將 連絡人 記錄新增至 帳戶contact_customer_accounts 集合,這是一對多關聯性的一部分。

要求:

POST [Organization Uri]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)/contact_customer_accounts/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.id": "[Organization URI]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)"
}

回應:

HTTP/1.1 204 NoContent
OData-Version: 4.0

下列範例示範如何將 角色 記錄新增至 systemusersystemuserroles_association 集合,這是多對多關聯性。

要求:

POST [Organization Uri]/api/data/v9.2/systemusers(34dcbaf5-f718-ed11-b83e-00224837179f)/systemuserroles_association/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.id": "[Organization URI]/api/data/v9.2/roles(886b280c-6396-4d56-a0a3-2c1b0a50ceb0)"
}

回應:

HTTP/1.1 204 NoContent
OData-Version: 4.0

從集合中移除記錄

下列範例顯示如何將連絡人記錄移除至連絡人值為 contact_customer_accountscontactid00aa00aa-bb11-cc22-dd33-44ee44ee44ee集合。

要求:

DELETE [Organization Uri]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)/contact_customer_accounts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

回應:

HTTP/1.1 204 NoContent
OData-Version: 4.0

下列要求也有效:

要求:

DELETE [Organization Uri]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)/contact_customer_accounts/$ref?$id=[Organization URI]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

回應:

HTTP/1.1 204 NoContent
OData-Version: 4.0

另請參閱

Web API 基本作業範例 (C#)
Web API 基本作業範例 (用戶端 JavaScript)
使用 Web API 執行作業
撰寫 Http 請求並處理錯誤
使用入口網站 API 查詢資料
使用 Web API 建立資料表資料列
使用 Web API 擷取資料表資料列
使用 Web API 更新和刪除表格列
使用 Web API 函式
使用 Web API 動作
使用 Web API 執行批次作業
使用 Web API 模擬其他使用者
使用 Web API 執行條件式作業