Utiliser les classes d’entité à liaison anticipée pour la création, la mise à jour et la suppression
Date de publication : janvier 2017
S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Dans Microsoft Dynamics 365 (Online et local), vous pouvez utiliser le modèle de données d’entité et les classes d’entité à liaison anticipée, créés par l’outil de génération de code (CrmSvcUtil) pour exploiter les données commerciales. Vous pouvez utiliser ces classes d’entité à liaison anticipée avec ou sans le contexte de service d’organisation, mais la meilleure méthode consiste à utiliser la classe de contexte de service d’organisation générée. Le contexte tente de gérer les relations efficacement, mais le code manuscrit peut généralement être encore plus efficace.
Notes
Les mises à jour des enregistrements sont effectuées dans un ordre spécifique. D’abord, les entités principales sont traitées, puis les entités associées. Si une modification est effectuée par l’entité principale pour une recherche ou un attribut d’entité associée, et qu’une entité associée met à jour le même attribut, la valeur d’entité associée sera retenue. Généralement, une valeur d’attribut de recherche et son équivalent dans RelatedEntities (ou les propriétés de navigation) pour la même relation ne doivent pas être utilisés en même temps.
Contenu de la rubrique
Utiliser la classe OrganizationServiceContext
Créer un enregistrement d’entité avec les classes d’entité à liaison anticipée et la classe OrganizationServiceContext
Mettre à jour un enregistrement d’entité avec les classes d’entité à liaison anticipée et la classe OrganizationServiceContext
Supprimer un enregistrement d’entité avec les classes d’entité à liaison anticipée et la classe OrganizationServiceContext
Utiliser des classes d’entité à liaison anticipée sans objet de contexte
Utiliser la classe OrganizationServiceContext
La classe de contexte de service d’organisation que l’outil de génération de code crée et hérite de OrganizationServiceContext est utilisée pour suivre les modifications de données. Le contexte fait le suivi des objets qui sont des instances des types d’entités représentant des données dans Microsoft Dynamics 365. Vous pouvez modifier, créer et supprimer des objets dans le contexte de service d’organisation, et Microsoft Dynamics 365 suit les modifications que vous avez apportées à ces objets. Lorsque la méthode OrganizationServiceContext.SaveChanges est appelée, Microsoft Dynamics 365 génère et exécute des commandes qui appliquent les instructions insert, update ou delete sur les données dans Microsoft Dynamics 365.
Lorsque vous utilisez les classes d’entité à liaison anticipée, vous utilisez le nom de l’entité ou le nom du schéma d’attribut pour spécifier une entité ou un attribut à utiliser. Les noms de schéma d’attribut sont définis dans les propriétés EntityMetadata.SchemaName et AttributeMetadata.SchemaName ou vous pouvez utiliser les noms de classe et de propriété affichés dans le fichier de code généré. Cet exemple explique comment attribuer une valeur à l’attribut de messagerie d’une nouvelle instance de contact.
Contact contact = new Contact();contact.EMailAddress1 = “sonny@contoso.com”;
Pour obtenir un exemple de code complet qui montre comment utiliser les classes d’entité à liaison anticipée pour effectuer des opérations de base de données élémentaires, voir Exemple : créer, récupérer, mettre à jour et supprimer des enregistrements (liaison anticipée).
Créer un enregistrement d’entité avec les classes d’entité à liaison anticipée et la classe OrganizationServiceContext
Lorsque vous souhaitez insérer des données dans Microsoft Dynamics 365 à l’aide du modèle de données d’entité, vous devez créer une instance d’un type d’entité et ajouter l’objet à un contexte de service d’organisation. Le contexte du service d’organisation doit suivre l’objet avant de pouvoir enregistrer l’objet dans Microsoft Dynamics 365.
En créant un enregistrement d’entité, vous ajoutez l’objet au contexte de service d’organisation avec la méthode OrganizationServiceContext.AddObject.
Cet exemple explique comment instancier et enregistrer un nouvel enregistrement de contact à l’aide du modèle de données d’entité. Il montre également comment accéder à un attribut personnalisé.
OrganizationServiceContext orgContext =new OrganizationServiceContext(_serviceProxy);
Contact contact = new Contact()
{
FirstName = "Charles",
LastName = "Brown",
Address1_Line1 = "123 Main St.",
Address1_City = "Des Moines",
Address1_StateOrProvince = "IA",
Address1_PostalCode = "21254",
new_twittername = "Chuck",
Telephone1 = "123-234-5678"
};
orgContext.AddObject(contact);orgContext.SaveChanges();
Après avoir ajouté un objet au contexte et avant d’appeler la méthode OrganizationServiceContext.SaveChanges, le contexte génère un ID pour le nouvel objet. Une exception contenant SaveChangesResults est levée à partir de la méthode SaveChanges en cas d’échec des mises à jour des données Microsoft Dynamics 365.
Mettre à jour un enregistrement d’entité avec les classes d’entité à liaison anticipée et la classe OrganizationServiceContext
Microsoft Dynamics 365 suit les modifications des objets qui sont associés au contexte de service d’organisation. Pour modifier un enregistrement d’entité existant, vous devez d’abord ajouter l’objet au contexte. Pour ajouter un objet au contexte, vous devez d’abord extraire l’enregistrement d’entité de Microsoft Dynamics 365, puis ajouter l’objet au contexte en utilisant la méthode OrganizationServiceContext.Attach. Une fois que l’objet est suivi par le contexte, vous pouvez mettre à jour l’enregistrement en définissant les attributs de l’entité.
Cet exemple explique comment mettre un attribut de compte à jour en utilisant les classes à liaison anticipée.
Account.EMailAddress1 = “Contoso-WebMaster@contoso.com”;
L’exemple suivant montre comment supprimer une valeur d’attribut.
Account.EMailAddress1 = null;
Il existe deux méthodes partielles nommées OnPropertyChanging et OnPropertyChanged pour chaque entité. Ces méthodes sont appelées dans la configuration des propriétés. Vous pouvez développer les méthodes en utilisant des classes partielles pour insérer une logique métier personnalisée.
Supprimer un enregistrement d’entité avec les classes d’entité à liaison anticipée et la classe OrganizationServiceContext
Pour supprimer un enregistrement d’entité, le contexte de service d’organisation doit suivre l’objet. Une fois que l’objet est dans le contexte, vous pouvez utiliser la méthode OrganizationServiceContext.DeleteObject pour marquer l’objet dans le contexte en vue de le supprimer. Notez que l’enregistrement d’entité dans Microsoft Dynamics 365 n’est pas supprimé tant que la méthode OrganizationServiceContext.SaveChanges est appelée.
Utiliser des classes d’entité à liaison anticipée sans objet de contexte
Vous pouvez utiliser les classes d’entité à liaison anticipée sans créer d’objet de contexte de service d’organisation si vous ne souhaitez pas en créer. La classe OrganizationServiceProxy inclut une propriété OrganizationServiceProxy. La méthode Create permet d'enregistrer les modifications liées aux enregistrements d’entités dans Microsoft Dynamics 365.
Cet exemple explique comment utiliser une classe d’entité à liaison anticipée sans créer d’objet de contexte de service d’organisation. La méthode OrganizationServiceProxy.Create renvoie l’ID GUID attribué au nouvel enregistrement d’entité créé.
Contact contact = new Contact()
{
FirstName = "Charles",
LastName = "Brown",
Address1_Line1 = "123 Main St.",
Address1_City = "Des Moines",
Address1_StateOrProvince = "IA",
Address1_PostalCode = "21254",
Telephone1 = "123-234-5678"
};
_contactId = _serviceProxy.Create(contact);
Pour mettre à jour un enregistrement d’entité dans Microsoft Dynamics 365, extrayez les données à mettre à jour, apportez les modifications nécessaires, puis utilisez la méthode OrganizationServiceProxy.Update pour valider ces modifications dans Microsoft Dynamics 365. Pour récupérer vos enregistrements d'entité, utilisez la méthode OrganizationServiceProxy.Retrieve pour la récupération d’un seul objet ou la méthode OrganizationServiceProxy.RetrieveMultiple pour la récupération de plusieurs objets. Pour supprimer un enregistrement d’entité, utilisez la méthode OrganizationServiceProxy. Méthode Delete.
Voir aussi
Utiliser les classes d’entité à liaison anticipée dans le code
Utiliser les classes de liaison anticipée pour ajouter ou mettre à jour les associations entre enregistrements associés
Créer des classes d’entité à liaison anticipée à l’aide de l’outil de génération de code (CrmSvcUtil.exe)
Exemple : créer, récupérer, mettre à jour et supprimer des enregistrements (liaison anticipée)
Microsoft Dynamics 365
© 2017 Microsoft. Tous droits réservés. Copyright