다음을 통해 공유


Web API를 사용하여 테이블 행 연결 및 연결 해제

테이블 정의 간에 존재하는 관계를 사용하여 테이블 행의 개별 레코드를 다른 레코드와 연결할 수 있습니다. 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를 사용하여 조건부 작업 수행