Associer et dissocier des lignes de tables à l’aide de l’API web
Vous pouvez associer des enregistrements individuels dans des lignes de table à d’autres enregistrements à l’aide de Relations qui existent entre les définitions de table. Dans OData, les Relations sont exprimés en tant que propriétés de navigation.
Vous pouvez découvrir quelles propriétés de navigation existent dans le document de service $metadata. Voir Propriétés de navigation de l’API web. Pour les tables Dataverse existantes, voir Web API EntityType Reference, pour chaque type d’entité, consultez les propriétés de navigation à valeur unique et à valeur de collection répertoriées.
Le tableau suivant décrit les trois types de Relations entre les tables dans Dataverse.
Type | Description | Exemple |
---|---|---|
Un-à-plusieurs | Un enregistrement peut être associé à plusieurs enregistrements. | Un enregistrement account peut avoir plusieurs enregistrements contact dans la propriété de navigation à valeur de collection contact_customer_accounts . |
Plusieurs à un | De nombreux enregistrements peuvent être associés à un enregistrement. Une relation plusieurs-à-un est l’image miroir de la relation un-à-plusieurs. Il n’y a qu’une seule relation. |
Plusieurs enregistrements contact peuvent être associés à un seul plusieurs enregistrement account à l’aide de la propriété de navigation à valeur unique parentcustomerid_account . |
Plusieurs-à-plusieurs | De nombreux enregistrements peuvent être associés à de nombreux enregistrements. | Chaque security role (role) peut inclure des références à la définition d’un systemuser. Ces deux tables ont une propriété de navigation à valeur de collection systemuserroles_association . |
Utilisation des propriétés de navigation à valeur unique
Pour les enregistrements existants du côté plusieurs d’une relation un-à-plusieurs ou plusieurs-à-un, vous pouvez associer l’enregistrement en définissant une référence Uri à l’autre enregistrement. La façon la plus simple et la plus courante de le faire est d’ajouter l’annotation @odata.bind
au nom de la propriété de navigation à valeur unique, puis définition de la valeur en tant qu’Uri pour l’autre enregistrement dans un demande PATCH
.
Association avec une propriété de navigation à valeur unique
Par exemple, pour associer un enregistrement contact à un account en utilisant la propriété de navigation à valeur unique parentcustomerid_account
:
Demande :
PATCH [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f) 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)"
}
Réponse :
HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)
Comme décrit dans Association des lignes de table pendant la création, de nouveaux enregistrements peuvent également être associés à des enregistrements existants de la même manière.
Dissociation avec une propriété de navigation à valeur unique
Si vous souhaitez dissocier, vous pouvez simplement définir la valeur sur null.
Demande :
PATCH [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f) 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
}
Réponse :
HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)
Quand vous dissociez de cette manière, vous n’avez pas besoin d’inclure l’annotation @odata.bind
. Vous pouvez simplement utiliser le nom de la propriété de navigation à valeur unique :
Demande :
PATCH [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
{
"parentcustomerid_account": null
}
Réponse :
HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)
More information: Mise à jour de base
Autres méthodes
Il existe d’autres moyens d’obtenir les mêmes résultats que ceux décrits ci-dessus avec des propriétés de navigation à valeur unique.
Vous pouvez utiliser la requête PUT
suivante pour définir la valeur de la propriété de navigation à valeur unique parentcustomerid_account
:
Demande :
PUT [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)/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)"
}
Réponse :
HTTP/1.1 204 NoContent
OData-Version: 4.0
Notes
Remarque : vous devez utiliser une URL absolue pendant la définition de la valeur de @odata.id
.
Pour supprimer la référence, vous pouvez également utiliser cette requête DELETE
:
Demande :
DELETE [Organization Uri]/api/data/v9.2/contacts(cf9eaaef-f718-ed11-b83e-00224837179f)/parentcustomerid_account/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
Réponse :
HTTP/1.1 204 NoContent
OData-Version: 4.0
Utilisation des propriétés de navigation à valeur de collection
Avec OData, les deux côtés des relations plusieurs-à-plusieurs auront les propriétés de navigation avec une valeur de collection. Pour les relations un-à-plusieurs et plusieurs-à-un, la table une du côté "Un" aura une propriété de navigation à valeur de collection. Il n’y a aucune différence dans la manière dont vous travaillez avec l’un de ces types de Relations quand vous utilisez des propriétés de navigation à valeur de collection. Cette section décrit comment utiliser les propriétés de navigation à valeur de collection avec n’importe quel type de relation.
Ajouter un enregistrement à une collection
L’exemple suivant montre comment ajouter un enregistrement contact à la collection account contact_customer_accounts
qui fait partie d’une relation un-à-plusieurs.
Demande :
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(cf9eaaef-f718-ed11-b83e-00224837179f)"
}
Réponse :
HTTP/1.1 204 NoContent
OData-Version: 4.0
L’exemple suivant montre comment ajouter un enregistrement role à la collection systemuser systemuserroles_association
qui est une relation plusieurs-à-plusieurs.
Demande :
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)"
}
Réponse :
HTTP/1.1 204 NoContent
OData-Version: 4.0
Supprimer un enregistrement d’une collection
L’exemple suivant montre comment supprimer un enregistrement contact de la collection account contact_customer_accounts
où la valeur contactid
du contact est cf9eaaef-f718-ed11-b83e-00224837179f
.
Demande :
DELETE [Organization Uri]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)/contact_customer_accounts(cf9eaaef-f718-ed11-b83e-00224837179f)/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
Réponse :
HTTP/1.1 204 NoContent
OData-Version: 4.0
Ce qui suit fonctionne également :
Demande :
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(cf9eaaef-f718-ed11-b83e-00224837179f) HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json
Réponse :
HTTP/1.1 204 NoContent
OData-Version: 4.0
Voir aussi
Exemple d’opérations de base de l’API Web (C#)
Exemple d’opérations de base de l’API Web (Javascript côté client)
Effectuer des opérations à l’aide de l’API Web
Composer des demandes Http et gérer les erreurs
Interroger les données à l’aide de l’API Web
Créer une ligne de table à l’aide de l’API web
Récupérer une ligne de table à l’aide de l’API web
Mettre à jour et supprimer des lignes de table à l’aide de l’API web
Utiliser des fonctions API Web
Utiliser des actions API web
Exécuter des opérations par lots à l’aide de l’API Web
Emprunter l’identité d’un autre utilisateur à l’aide de l’API Web
Effectuer les opérations conditionnelles à l’aide de l’API Web
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour