Partager via


Fournisseurs de données de tables virtuelles personnalisées

À l’aide du SDK des données Microsoft Dataverse, les développeurs .NET peuvent créer des fournisseurs personnalisés de données de tables virtuelles afin d’intégrer les types de sources de données externes qui ne sont pas pris en charge par un fournisseur de données existant. Chaque fournisseur de données est constitué d’un ensemble réutilisable de plug-ins Dataverse qui implémentent les opérations CRUD prises en charge. Pour chaque table virtuelle, aussi connue en tant qu’entité virtuelle, les développeurs peuvent créer des plug-ins et les enregistrer représentant chacune opérations Créer, Mettre à jour, Récupérer, Récupérer plusieurs éléments et Supprimer. Cette section fournit des informations fondamentales sur les fournisseurs de données et les approches de développement de fournisseurs personnalisés, y compris des exemples de code.

Notes

Comme alternative à la création d’un fournisseur de source de données personnalisé, vous devez envisager d’adapter votre source de données à un fournisseur de données existant. Par exemple, si vous créez une interface OData v4 pour votre source de données externe, vous pouvez y accéder directement avec le fournisseur de données OData v4 standard fourni, qui prend en charge également les opérations CRUD. Le mécanisme d’ajout de cette interface REST dépend de la technologie de service de données sous-jacente ; par exemple, voir WCF Data Services 4.5. OData assure une large prise en charge du secteur, avec un large éventail d’outils dédiés et de technologies compatibles.

Configuration requise

Les fournisseurs de données personnalisés nécessitent de créer et de gérer d’importantes ressources de développement. Vous devez avoir des connaissances fondamentales des domaines suivants :

L’assembly Microsoft.Xrm.Sdk.Data.dll est disponible en tant que package NuGet : Microsoft.CrmSdk.Data

Catégories de fournisseurs

Deux grandes catégories de fournisseur de données peuvent être créées à l’aide des assemblys du SDK des données de tables virtuelles : générique ou ciblé. Le tableau ci-dessous décrit ces approches et les met en correspondance avec le modèle de développement de fournisseur de données qui convient le mieux à cette approche.

Catégorie Modèle de développement Description
Générique Fournisseur complet Ces fournisseurs peuvent traduire de manière flexible FetchXML les expressions de requête en requête associée vers le source de données externe, puis renvoyer les enregistrements résultants. Ce fournisseur peut être réutilisé pour toutes les instances de ce type de source de données. Cette approche est la plus générale mais est plus complexe à développer. Si le schéma de la source de données est modifié, les tables virtuelles affectées doivent uniquement être mappées à nouveau.
Ciblé Fournisseurs LINQ pour un schéma connu Ce fournisseur traduit de manière limitée les requêtes en appel LINQ associé à une instance de source de données existante connue. La source de données doit être un fournisseur LINQ, comme décrit dans la rubrique Activer une source de données pour les requêtes LINQ. Cette approche est limitée à une instance de source de données spécifique, mais elle nécessite beaucoup moins de codage. Si le schéma de la source de données est modifié, le fournisseur de données doit être mis à jour et régénéré.

Le fournisseur de données OData v4 standard et le fournisseur de données Azure Cosmos DB sont des exemples de fournisseurs génériques.

Étapes pour utiliser un fournisseur de données personnalisé

Plusieurs étapes sont nécessaires pour créer une solution de fournisseur de données de tables virtuelles qui peut être importée dans vos applications Dataverse :

  1. Développez la DLL du plug-in de fournisseur de données personnalisé (ou un ensemble de DLL).
  2. Enregistrez le fournisseur de données personnalisé auprès de votre service Dataverse au moyen de l’outil Plug-in Registration (PRT).
  3. Créez une solution de fournisseur de données.
  4. Personnalisez la table de source de données pour refléter votre type de données ou votre instance spécifique.
  5. Exportez la solution de fournisseur de données personnalisé.

Pour obtenir plus d’informations : Exemple : fournisseur de table virtuelle personnalisée avec opérations CRUD

Développement de plug-ins

Parce que les tables virtuelles prennent en charge les opérations CRUD, vous allez écrire le formulaire de données sous la forme d’un plug-in enregistré sur les événements Créer, Mettre à jour, Récupérer, Récupérer plusieurs éléments et Supprimer. Chaque événement respectif contient des informations dans le contexte d’exécution qui décrivent le type de données à renvoyer.

Événement Contexte d’exécution
Récupérer Décrit la table à récupérer ainsi que les colonnes et les tables associées à inclure.
RetrieveMultiple Contient un objet QueryExpression définissant la requête. La structure contient une classe QueryExpressionVisitor conçue pour inspecter les différentes parties de l’arborescence d’expressions de requête.

Pour les deux événements, vous devez :

  1. Convertir les informations respectives du contexte d’exécution en une requête appropriée pour votre source de données externe.
  2. Récupérer les données du système externe.
  3. Pour Récupérer, convertissez les données en Entity ; sinon, pour RetrieveMultiple, convertissez-les en EntityCollection. Ce résultat est renvoyé via la plateforme Dataverse à l’utilisateur exécutant la requête.

Les classes de l’espace de noms Microsoft.Xrm.Sdk.Data fournissent une structure d’aide au mappage des informations de requête Dataverse du contexte d’exécution en une requête au format approprié pour votre source de données externe. Cette structure vous permet de convertir les données renvoyées en types Entity ou EntityCollection appropriés attendus par la plateforme Dataverse.

Exceptions de fournisseur de données

Si pour une raison quelconque votre code ne peut pas atteindre le résultat attendu, vous devez générer l’erreur appropriée. L’espace de noms Microsoft.Xrm.Sdk.Data.Exceptions contient les classes d’exception suivantes, dérivées de SdkExceptionBase, que vous pouvez utiliser aux fins suivantes :

Classe d’exception Description
AuthenticationException Une erreur s’est produite lors de l’authentification de sécurité du service de source de données externe ; par exemple le statut HTTP 401 est reçu du service de données externe. Se produit généralement car l’utilisateur actuel ne dispose pas des privilèges adéquats ou les informations de connexion dans le EntityDataSource associé ne sont pas valides.
EndpointException La configuration du point de terminaison dans la table de source de données n’est pas valide ou le point de terminaison n’existe pas.
GenericDataAccessException Erreur générale d’accès aux données, utilisée lorsque l’erreur ne correspond pas à une exception plus spécifique.
InvalidMetadataException
InvalidQueryException La requête spécifiée n’est pas valide ; par exemple une combinaison de clauses non valide ou un opérateur de comparaison non pris en charge.
ObjectNotFoundException L’enregistrement spécifié dans la source de données externe n’existe pas.
TimeoutException L’opération externe ne s’est pas terminée dans le temps imparti ; par exemple, le résultat d’un statut HTTP 408 du service de données externe.

Inscription des plug-ins

Contrairement à un plug-in ordinaire, vous utilisez uniquement l’outil Plug-in Registration (PRT) pour enregistrer l’assembly et les plug-ins pour chaque événement. Vous n’enregistrez pas des étapes spécifiques. Votre plug-in s’exécute à la phase 30, la principale phase de transaction pour l’opération qui n’est pas disponible pour les étapes du plug-in ordinaire. Plutôt que d’enregistrer les étapes, vous allez configurer votre fournisseur de données à l’aide des tables suivantes.

Tableau Description
EntityDataProvider Définit les plug-ins à utiliser pour chaque événement et le nom logique de la source de données.

Lorsque les définitions de votre table virtuelle sont configurées, les plug-ins sont enregistrés à l’aide de l’outil PRT et les données de configuration correctes sont définies dans la table EntityDataProvider, votre table virtuelle commence à répondre aux demandes.

Pour obtenir plus d’informations : Création du fournisseur de données et ajout de plug-ins au fournisseur

Déboguer des plug-ins

Un fournisseur de table virtuelle personnalisé est un type de plug-in. Utilisez les informations de ces rubriques pour déboguer les plug-ins pour les fournisseurs de table virtuelle personnalisés :Plug-ins de débogage et Tutoriel : déboguer un plug-in.

Voir aussi

Démarrer avec les tables virtuelles
Considérations sur les tables virtuelles
Exemple : Plug-in générique fournisseur de données des tables virtuelles

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é).