Kongsi melalui


Kaitkan dan nyahassociasikan baris jadual menggunakan API Web

Anda boleh mengaitkan rekod individu dalam baris jadual dengan rekod lain menggunakan perhubungan yang wujud antara takrifan jadual. Dalam OData, perhubungan dinyatakan sebagai sifat navigasi.

Anda boleh menemui sifat navigasi yang wujud dalam dokumen perkhidmatan $metadata. Lihat Sifat Navigasi API Web. Untuk jadual Dataverse sedia ada, lihat Rujukan EntityType API Web

, untuk setiap jenis entiti, lihat sifat navigasi bernilai tunggal dan nilai koleksi yang disenaraikan.

Jadual berikut menerangkan tiga jenis perhubungan antara jadual dalam Dataverse.

Jenis Keterangan Contoh
Satu kepada Banyak Satu rekod boleh mempunyai banyak rekod yang dikaitkan dengannya. Rekod akaun boleh mempunyai banyak rekod kenalan dalam contact_customer_accountssifat navigasi bernilai koleksi.
Banyak kepada Satu Banyak rekod boleh dikaitkan dengan satu rekod.

Many-to-One ialah imej cermin hubungan One-to-Many. Hanya ada satu hubungan.
Berbilang rekod kenalan boleh dikaitkan dengan satu rekod akaun menggunakan parentcustomerid_accountsifat navigasi bernilai tunggal.
Banyak kepada Banyak Banyak rekod boleh dikaitkan dengan banyak rekod. Setiap peranan keselamatan (peranan) mungkin termasuk rujukan kepada definisi pengguna sistem.
Kedua-dua jadual ini mempunyai systemuserroles_associationsifat navigasi bernilai koleksi.

Menggunakan sifat navigasi bernilai tunggal

Untuk rekod sedia ada pada banyak bahagian perhubungan satu-ke-banyak atau banyak-ke-satu, anda boleh mengaitkan rekod dengan mengesetkan rujukan Uri kepada rekod lain. Cara paling mudah dan paling biasa untuk melakukan ini ialah dengan menambahkan @odata.bind anotasi pada nama sifat navigasi bernilai tunggal dan kemudian mengesetkan nilai sebagai Uri kepada rekod lain dalam PATCH permintaan.

Kaitkan dengan sifat navigasi bernilai tunggal

Contohnya, untuk mengaitkan rekod kenalan kepada rekod akaun menggunakan parentcustomerid_account sifat navigasi nilai tunggal:

Permintaan:

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

Respons:

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

Seperti yang diterangkan dalam Kaitkan baris jadual pada cipta, anda juga boleh mengaitkan rekod baharu dengan rekod sedia ada dengan cara yang sama.

Putuskan pergaulan dengan menggunakan sifat navigasi bernilai tunggal

Untuk memutuskan pergaulan, tetapkan nilai kepada null.

Permintaan:

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
}

Respons:

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

Apabila anda memutuskan hubungan dengan menggunakan kaedah ini, jangan sertakan @odata.bind anotasi. Gunakan nama sifat navigasi bernilai tunggal:

Permintaan:

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
}

Respons:

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

Maklumat lanjut: Kemas kini asas

Kaedah lain

Anda boleh menggunakan kaedah lain untuk mencapai hasil yang sama yang diterangkan sebelum ini dengan sifat navigasi bernilai tunggal.

Gunakan permintaan berikut PUT untuk mengesetkan nilai parentcustomerid_account sifat navigasi nilai tunggal:

Permintaan:

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

Respons:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Nota

Anda mesti menggunakan URL mutlak apabila menetapkan nilai untuk @odata.id.

Untuk mengalih keluar rujukan, gunakan permintaan ini DELETE :

Permintaan:

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

Respons:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Menggunakan sifat navigasi bernilai koleksi

Dengan OData, kedua-dua belah perhubungan banyak dengan banyak mempunyai sifat navigasi bernilai koleksi. Untuk perhubungan satu kepada banyak dan banyak kepada satu, jadual pada bahagian "Satu" mempunyai sifat navigasi bernilai koleksi. Tiada perbezaan dalam cara anda bekerja dengan mana-mana jenis perhubungan ini semasa menggunakan sifat navigasi bernilai koleksi. Bahagian ini menerangkan cara bekerja dengan sifat navigasi bernilai koleksi untuk sebarang jenis perhubungan.

Tambah rekod pada koleksi

Contoh berikut menunjukkan cara menambah rekod kenalan pada koleksi akauncontact_customer_accounts , yang merupakan sebahagian daripada perhubungan satu-ke-banyak.

Permintaan:

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

Respons:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Contoh berikut menunjukkan cara menambah rekod peranan pada koleksi systemusersystemuserroles_association , yang merupakan perhubungan banyak kepada banyak.

Permintaan:

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

Respons:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Alih keluar rekod daripada koleksi

Contoh berikut menunjukkan cara mengalih keluar rekod kenalan ke koleksi akauncontact_customer_accounts di mana nilai kenalan contactid adalah 00aa00aa-bb11-cc22-dd33-44ee44ee44ee.

Permintaan:

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

Respons:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Permintaan berikut juga berfungsi:

Permintaan:

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

Respons:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Lihat juga

Sampel Operasi Asas API Web (C#)
Sampel Operasi Asas API Web (JavaScript bahagian pelanggan)
Melaksanakan operasi menggunakan API Web
Mengarang permintaan Http dan mengendalikan ralat
Pertanyaan Data menggunakan API Web
Cipta baris jadual menggunakan API Web
Dapatkan semula baris jadual menggunakan API Web
Kemas kini dan padamkan baris jadual menggunakan API Web
Gunakan fungsi API Web
Gunakan tindakan API Web
Laksanakan operasi kumpulan menggunakan API Web
Menyamar sebagai pengguna lain menggunakan API Web
Lakukan operasi bersyarat menggunakan API Web