您可以使用表格定義之間存在的關係,將表格列中的個別記錄與其他記錄相關聯。 在 OData 中,關聯性會以導覽屬性表示。
您可以探索 $metadata 服務文件中存在哪些導覽屬性。 請參閱 Web API 導覽屬性。 如需現有的 Dataverse 資料表,請參閱 Web API EntityType 參考,針對每個實體類型,請參閱列出的單一值和集合值導覽屬性。
下表描述了 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 的值時,您必須使用絕對 URL。
若要移除參考,您也可以使用此 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_accounts的contactid00aa00aa-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 執行條件式作業