테이블 정의 간에 존재하는 관계를 사용하여 테이블 행의 개별 레코드를 다른 레코드와 연결할 수 있습니다. OData에서 관계는 탐색 속성으로 표현됩니다.
$metadata 서비스 문서에 있는 탐색 속성을 검색할 수 있습니다. Web API 탐색 속성을 참조하세요. 기존 Dataverse 테이블의 경우, Web API EntityType 참조를 통해 각 엔터티 형식에 대한 나열된 단일 값 및 컬렉션 값 탐색 속성을 확인하세요.
다음 표에서는 Dataverse의 테이블 간의 세 가지 유형의 관계에 대해 설명합니다.
| 유형 | Description | Example |
|---|---|---|
| 일대다 | 하나의 레코드에는 여러 레코드가 연결되어 있을 수 있습니다. |
계정 레코드는 contact_customer_accounts컬렉션 값 탐색 속성에서 많은 연락처 레코드를 가질 수 있습니다. |
| 다대일 | 많은 레코드를 하나의 레코드와 연결할 수 있습니다. 다대일은 일대다 관계의 미러 이미지입니다. 하나의 관계만 있습니다. |
단일 값 탐색 속성을 사용하여 여러 연락처 레코드를 단일 parentcustomerid_account 레코드에 연결할 수 있습니다. |
| 다대다 | 많은 레코드를 여러 레코드와 연결할 수 있습니다. | 각 보안 역할(역할) 에는 systemuser 정의에 대한 참조가 포함될 수 있습니다. 이 두 테이블에는 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
다음 예제에서는 다 대 다 관계인 systemuser 컬렉션에 systemuserroles_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
컬렉션에서 레코드 제거
다음 예제에서는
요청:
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 함수 사용
웹 API 작업 사용
Web API를 사용하여 일괄 처리 작업 실행
Web API를 사용하여 다른 사용자를 가장하기
Web API를 사용하여 조건부 작업 수행