Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
È possibile associare singoli record nelle righe della tabella ad altri record usando relazioni esistenti tra le definizioni di tabella. In OData le relazioni vengono espresse come proprietà di navigazione.
È possibile individuare le proprietà di navigazione presenti nel documento del servizio $metadata. Vedere Proprietà di navigazione dell'API Web. Per le tabelle Dataverse esistenti, vedere il Riferimento EntityType dell'API Web
, per ogni tipo di entità, vedi le proprietà di navigazione con valori singoli e con valori di raccolta elencati.
Nella tabella seguente vengono descritti i tre tipi di relazioni tra le tabelle in Dataverse.
| TIPO | Description | Example |
|---|---|---|
| Uno-a-molti | A un record possono essere associati molti record. | Un record di un account può avere molti record di contatto nella contact_customer_accountsproprietà di navigazione a valori collettivi. |
| Molti-a-uno | Molti record possono essere associati a un record. Molti-a-Uno è l'immagine speculare di una relazione uno-a-molti. C'è solo una relazione. |
È possibile associare più record di contatto a un singolo record di account usando la parentcustomerid_accountproprietà di navigazione a valore singolo. |
| Molti-a-molti | Molti record possono essere reciprocamente associati a molti altri record. | Ogni ruolo di sicurezza (ruolo) può includere riferimenti alla definizione di un utente di sistema. Entrambe queste tabelle hanno una systemuserroles_associationproprietà di navigazione con valori di raccolta. |
Uso delle proprietà di navigazione a valore singolo
Per i record esistenti sul lato molti di una relazione uno-a-molti o molti-a-uno, è possibile associare il record impostando un riferimento Uri all'altro record. Il modo più semplice e comune per eseguire questa operazione consiste nell'aggiungere l'annotazione @odata.bind al nome della proprietà di navigazione a valore singolo e quindi impostare il valore come Uri sull'altro record in una PATCH richiesta.
Associare con una proprietà di navigazione a valore singolo
Ad esempio, per associare un record di contatto a un record di account usando la parentcustomerid_account proprietà di navigazione a valore singolo:
Richiesta:
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)"
}
Risposta:
HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
Come descritto in Associare righe di tabella alla creazione, è anche possibile associare nuovi record ai record esistenti nello stesso modo.
Annullare l'associazione tramite una proprietà di navigazione a valore singolo
Per annullare l'associazione, impostare il valore su null.
Richiesta:
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
}
Risposta:
HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
Quando si annulla l'associazione usando questo metodo, non includere l'annotazione @odata.bind . Usare il nome della proprietà di navigazione a valore singolo:
Richiesta:
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
}
Risposta:
HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
Altre informazioni: Aggiornamento di base
Altri metodi
È possibile usare altri metodi per ottenere gli stessi risultati descritti in precedenza con le proprietà di navigazione a valore singolo.
Usare la richiesta seguente PUT per impostare il valore della proprietà di parentcustomerid_account navigazione a valore singolo:
Richiesta:
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)"
}
Risposta:
HTTP/1.1 204 NoContent
OData-Version: 4.0
Annotazioni
È necessario usare un URL assoluto quando si imposta il valore per @odata.id.
Per rimuovere il riferimento, usare questa DELETE richiesta:
Richiesta:
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
Risposta:
HTTP/1.1 204 NoContent
OData-Version: 4.0
Uso delle proprietà di navigazione con valori di raccolta
Con OData, entrambi i lati di una relazione molti-a-molti hanno proprietà di navigazione di tipo raccolta. Per le relazioni uno-a-molti e molti-a-uno, sul lato "Uno" la tabella ha una proprietà di navigazione a valori multipli. Non esiste alcuna differenza nel modo in cui si lavora con uno qualsiasi di questi tipi di relazioni usando le proprietà di navigazione con valori di raccolta. Questa sezione descrive come utilizzare le proprietà di navigazione con valori di raccolta per qualsiasi tipo di relazione.
Aggiungere un record a una raccolta
Nell'esempio seguente viene illustrato come aggiungere un record "contatto" nella raccolta dell'accountcontact_customer_accounts, che fa parte di una relazione uno-a-molti.
Richiesta:
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)"
}
Risposta:
HTTP/1.1 204 NoContent
OData-Version: 4.0
Nell'esempio seguente viene mostrato come aggiungere un record di ruolo alla raccolta systemusersystemuserroles_association, che rappresenta una relazione molti-a-molti.
Richiesta:
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)"
}
Risposta:
HTTP/1.1 204 NoContent
OData-Version: 4.0
Rimuovere un record da una raccolta
Nell'esempio seguente viene illustrato come rimuovere un record contatto nella raccolta di accountcontact_customer_accounts in cui il valore del contatto contactid è 00aa00aa-bb11-cc22-dd33-44ee44ee44ee.
Richiesta:
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
Risposta:
HTTP/1.1 204 NoContent
OData-Version: 4.0
La richiesta seguente funziona anche:
Richiesta:
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
Risposta:
HTTP/1.1 204 NoContent
OData-Version: 4.0
Vedere anche
Esempio di operazioni di base dell'API Web (C#)
Esempio di operazioni di base dell'API Web (JavaScript sul lato client)
Eseguire operazioni usando l'API Web
Comporre richieste HTTP e gestire gli errori
Eseguire query di dati utilizzando l'API Web
Creare una riga di tabella usando l'API Web
Recuperare una riga di tabella usando l'API Web
Aggiornare ed eliminare righe di tabella usando l'API Web
Usare le funzioni API Web
Utilizzare le azioni API Web
Eseguire operazioni batch con l'API Web
Rappresentare un altro utente usando l'API Web
Eseguire operazioni condizionali usando l'API Web