Utilisation d’une clé secondaire pour créer un enregistrement
Vous pouvez utiliser des clés secondaires pour créer des instances des classes Entity et EntityReference. Cet article aborde les modèles d’utilisation et les exceptions possibles pouvant être renvoyées lorsque des clés secondaires sont utilisées. Pour comprendre comment définir des clés secondaires pour une table, voir Définition de clés secondaires pour une table.
Notes
Vous pouvez également mettre à jour les enregistrements à l’aide des clés secondaires. Informations complémentaires : Mettre à jour avec une clé secondaire
Utilisation de clés secondaires pour créer une table
Vous pouvez désormais créer une Entity avec un ID principal, un KeyAttribute unique ou une collection de colonnes principales en un seul appel à l’aide de ces constructeurs.
public Entity (string logicalName, Guid id) {…}
public Entity (string logicalName, string keyName, object keyValue) {…}
public Entity (string logicalName, KeyAttributeCollection keyAttributes) {…}
Une Entity valide utilisée pour les opérations de mise à jour contient un nom logique de la table et l’un des éléments suivants :
- Une valeur pour l’ID (valeur GUID de clé primaire)
- Une paire de valeurs clés spécifiées
- un KeyAttributeCollection avec un ensemble de colonnes valide correspondant à une clé définie pour la table.
Utilisation de clés secondaires pour créer une EntityReference
Vous pouvez également créer une EntityReference avec un ID principal, un KeyAttribute unique ou une collection de colonnes principales en un seul appel à l’aide de ces constructeurs.
public EntityReference(string logicalName, Guid id) {…}
public EntityReference(string logicalName, string keyName, object keyValue) {…}
public EntityReference(string logicalName, KeyAttributeCollection keyAttributeCollection) {…}
Un EntityReference valide comprend un nom logique de la table et soit :
- Une valeur pour l’ID (valeur GUID de clé primaire)
- Une paire de valeurs clés spécifiées
- une collection KeyAttributeCollection avec un ensemble de colonnes valide correspondant à une clé définie pour la table.
Autre entrée pour les messages
En passant des tables vers CreateRequest et UpdateRequest, les valeurs données aux colonnes de recherche utilisant EntityReference peuvent désormais utiliser EntityReference avec des clés secondaires définies dans KeyAttributes pour spécifier l’enregistrement associé. Elles seront résolues et remplacées par les références principales des tables basées sur les ID avant que les messages soient gérés.
Exceptions lors de l’utilisation de clés secondaires
Vous devez tenir compte des conditions et des exceptions possibles suivantes lorsque vous utilisez des clés secondaires :
L’ID principal est utilisé, s’il est fourni. S’il n’est pas fourni, KeyAttributeCollection est examinée. Si KeyAttributeCollection n’est pas fourni, une erreur est générée.
Si la KeyAttributeCollection fournie comprend une colonne qui est la clé primaire de la table et si la valeur est valide, il remplit la propriété ID de Entity ou de EntityReference avec la valeur fournie.
Si les colonnes de clé sont fournies, le système tente de faire correspondre l’ensemble des colonnes fournies avec les clés définies pour Entity. Si aucune correspondance n’est trouvée, une erreur est générée. Si une correspondance est trouvée, les valeurs fournies pour ces colonnes sont validées. S’il est valide, il récupère l’ID de l’enregistrement correspondant aux valeurs de clé fournies, et remplit la valeur d’ID de Entity ou de EntityReference avec cette valeur.
Si vous spécifiez une colonne définie qui n’est pas définie comme clé unique, une erreur est générée, indiquant qu’il est nécessaire d’utiliser des colonnes principales uniques.
Voir aussi
Définition de clés secondaires pour la table
Utiliser le suivi des modifications pour synchroniser les données avec les systèmes externes
Utilisation de Upsert pour insérer ou mettre à jour un enregistrement
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
Envoyer et afficher des commentaires pour