Chia sẻ qua


Liên kết và hủy liên kết các hàng trong bảng bằng API Web

Bạn có thể liên kết các bản ghi riêng lẻ trong các hàng bảng với các bản ghi khác bằng cách sử dụng các mối quan hệ tồn tại giữa các định nghĩa bảng. Trong OData, các mối quan hệ được biểu thị dưới dạng thuộc tính điều hướng.

Bạn có thể khám phá các thuộc tính điều hướng nào tồn tại trong tài liệu dịch vụ $metadata. Xem Thuộc tính điều hướng API Web. Đối với các bảng Dataverse hiện có, hãy xem Tài liệu tham khảo EntityType API Web

, đối với mỗi loại thực thể, hãy xem các thuộc tính điều hướng có giá trị đơn và giá trị bộ sưu tập được liệt kê.

Bảng sau đây mô tả ba loại mối quan hệ giữa các bảng trong Dataverse.

Loại Description Ví dụ
Một-Nhiều Một bản ghi có thể có nhiều bản ghi được liên kết với nó. Bản ghi tài khoản có thể có nhiều bản ghi người liên hệ trong contact_customer_accountsthuộc tính điều hướng có giá trị bộ sưu tập.
Nhiều đối một Nhiều bản ghi có thể được liên kết với một bản ghi.

Nhiều đối một là hình ảnh phản chiếu của mối quan hệ Một-Nhiều. Chỉ có một mối quan hệ.
Nhiều bản ghi người liên hệ có thể được liên kết với một bản ghi tài khoản bằng cách sử dụng parentcustomerid_accountthuộc tính điều hướng có giá trị đơn.
Nhiều-nhiều Nhiều bản ghi có thể được liên kết với nhiều bản ghi. Mỗi vai trò bảo mật (vai trò) có thể bao gồm các tham chiếu đến định nghĩa của người dùng hệ thống.
Cả hai bảng này đều có systemuserroles_associationthuộc tính điều hướng có giá trị bộ sưu tập.

Sử dụng thuộc tính điều hướng có giá trị đơn

Đối với các bản ghi hiện có ở nhiều phía của mối quan hệ một-nhiều hoặc nhiều-một, bạn có thể liên kết bản ghi bằng cách đặt tham chiếu Uri với bản ghi khác. Cách dễ nhất và phổ biến nhất để thực hiện việc này là thêm @odata.bind chú thích vào tên của thuộc tính điều hướng có giá trị đơn, sau đó đặt giá trị dưới dạng Uri cho bản ghi khác trong yêu PATCH cầu.

Liên kết với một thuộc tính điều hướng có một giá trị

Ví dụ: để liên kết bản ghi người liên hệ với bản ghi tài khoản bằng cách sử dụng parentcustomerid_account thuộc tính điều hướng có giá trị đơn:

Lời yêu cầu:

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)"
}

Phản ứng:

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

Như được mô tả trong Liên kết các hàng trong bảng khi tạo, bạn cũng có thể liên kết các bản ghi mới với các bản ghi hiện có theo cách tương tự.

Hủy liên kết bằng cách sử dụng thuộc tính điều hướng có một giá trị

Để hủy liên kết, hãy đặt giá trị thành null.

Lời yêu cầu:

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
}

Phản ứng:

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

Khi bạn hủy liên kết bằng cách sử dụng phương pháp này, đừng bao gồm @odata.bind chú thích. Sử dụng tên của thuộc tính điều hướng có giá trị đơn:

Lời yêu cầu:

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
}

Phản ứng:

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

Thông tin thêm: Cập nhật cơ bản

Các phương pháp khác

Bạn có thể sử dụng các phương pháp khác để đạt được kết quả tương tự như mô tả trước đó với các thuộc tính điều hướng có giá trị đơn.

Sử dụng yêu cầu sau PUT để đặt giá trị của parentcustomerid_account thuộc tính điều hướng có giá trị đơn:

Lời yêu cầu:

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)"
}

Phản ứng:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Lưu ý

Bạn phải sử dụng URL tuyệt đối khi đặt giá trị cho @odata.idtệp .

Để xóa tham chiếu, hãy sử dụng yêu cầu này DELETE :

Lời yêu cầu:

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

Phản ứng:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Sử dụng thuộc tính điều hướng có giá trị bộ sưu tập

Với OData, cả hai mặt của mối quan hệ nhiều-nhiều đều có các thuộc tính điều hướng có giá trị bộ sưu tập. Đối với các mối quan hệ một-nhiều và nhiều-một, bảng ở phía 'Một' có thuộc tính điều hướng có giá trị bộ sưu tập. Không có sự khác biệt trong cách bạn làm việc với bất kỳ loại mối quan hệ nào trong số này khi sử dụng thuộc tính điều hướng có giá trị bộ sưu tập. Phần này mô tả cách làm việc với các thuộc tính điều hướng có giá trị bộ sưu tập cho bất kỳ loại mối quan hệ nào.

Thêm bản ghi vào bộ sưu tập

Ví dụ sau đây cho thấy cách thêm bản ghi người liên hệ vào bộ sưu tập tài khoảncontact_customer_accounts , là một phần của mối quan hệ một-nhiều.

Lời yêu cầu:

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)"
}

Phản ứng:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Ví dụ sau đây cho thấy cách thêm bản ghi vai trò vào bộ sưu tập systemusersystemuserroles_association , đây là mối quan hệ nhiều-nhiều.

Lời yêu cầu:

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)"
}

Phản ứng:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Xóa bản ghi khỏi bộ sưu tập

Ví dụ sau đây cho thấy cách xóa bản ghi người liên hệ vào bộ sưu tập tài khoảncontact_customer_accounts có giá trị người liên hệ contactid .00aa00aa-bb11-cc22-dd33-44ee44ee44ee

Lời yêu cầu:

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

Phản ứng:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Yêu cầu sau đây cũng hoạt động:

Lời yêu cầu:

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

Phản ứng:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Xem thêm

Mẫu hoạt động cơ bản của API Web (C#)
Mẫu hoạt động cơ bản API Web (JavaScript phía máy khách)
Thực hiện các thao tác bằng API Web
Soạn các yêu cầu Http và xử lý lỗi
Truy vấn dữ liệu bằng API Web
Tạo hàng bảng bằng cách sử dụng API Web
Truy xuất hàng bảng bằng API Web
Cập nhật và xóa các hàng trong bảng bằng API Web
Sử dụng các chức năng API Web
Sử dụng các hành động của Web API
Thực hiện các hoạt động hàng loạt bằng API Web
Mạo danh người dùng khác bằng API Web
Thực hiện các thao tác có điều kiện bằng API Web