Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
À l’aide du Kit de développement logiciel (SDK) Microsoft Dataverse Data, les développeurs .NET ont la possibilité de créer des fournisseurs de données de table virtuelle personnalisées pour intégrer des 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 se compose d’un ensemble réutilisable de plug-ins Dataverse qui implémentent les opérations CRUD prises en charge. Pour chaque table virtuelle, également appelée entité virtuelle, les développeurs peuvent créer des plug-ins et les inscrire représentant chacune de l’opération Create, Update, Retrieve, RetrieveMultiple et Delete . 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.
Note
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 vers votre source de données externe, vous pouvez y accéder directement avec le fournisseur de données OData v4 standard fourni, qui prend également en charge 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.
Prerequisites
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 :
- Le schéma de la source de données externe et les techniques d’accès aux données associées. Ces connaissances du domaine sont spécifiques au type de source de données externe.
- Schéma de définition dataverse : Plus d’informations : Utiliser des définitions de table et de colonne à l’aide du code.
- Infrastructure d’événements Dataverse : Plus d’informations : Event Framework.
- Architecture et développement du plug-in Dataverse : Plus d’informations : Utilisez des plug-ins pour étendre les processus métier.
L’assembly Microsoft.Xrm.Sdk.Data.dll est disponible en tant que package NuGet : Microsoft.CrmSdk.Data
Catégories de fournisseurs
Il existe deux catégories générales de fournisseur de données que vous pouvez créer à l’aide des assemblys sdk de données de table virtuelle : 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 les expressions de requête FetchXML vers la requête associée vers la source de données externe, puis retourner 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 change, les tables virtuelles affectées doivent uniquement être remappées. |
| 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 table virtuelle qui peut être importée dans vos applications Dataverse :
- Développez la DLL du plug-in de fournisseur de données personnalisé (ou un ensemble de DLL).
- Inscrivez le fournisseur de données personnalisé auprès de votre service Dataverse à l’aide de l’outil d’inscription de plug-in (PRT).
- Créez une solution de fournisseur de données.
- Personnalisez la table de source de données pour refléter votre type de données ou votre instance spécifique.
- Exportez la solution de fournisseur de données personnalisé.
Plus d’informations : Exemple : Fournisseur de tables virtuelles personnalisées avec des opérations CRUD
Développement de plug-ins
Étant donné que les tables virtuelles prennent en charge les opérations CRUD, vous allez écrire le fournisseur de données sous la forme d’un plug-in inscrit sur les événements Create, Update, Retrieve, RetrieveMultiple et Delete . 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 toutes les tables associées à inclure. |
| RetrieveMultiple | Contient un QueryExpression objet 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 :
- Convertir les informations respectives du contexte d’exécution en une requête appropriée pour votre source de données externe.
- Récupérer les données du système externe.
- Pour Récupérer, convertissez les données en un Entity; sinon, pour RetrieveMultiple, convertissez-les en .EntityCollection Ce résultat est retourné via la plateforme Dataverse à l’utilisateur qui exécute la requête.
Les classes de l’espace de noms Microsoft.Xrm.Sdk.Data fournissent une infrastructure pour faciliter le mappage des informations de requête de Dataverse issues du contexte d’exécution vers une requête adaptée au format approprié pour votre source de données externe. Cette infrastructure vous aidera à convertir les données retournées dans les types appropriés Entity ou EntityCollection 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 Microsoft.Xrm.Sdk.Data.Exceptions de noms contient les classes d’exception suivantes, dérivées de SdkExceptionBase, que vous pouvez utiliser à cet effet :
| 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 n’a pas terminé dans le délai imparti ; par exemple, le résultat d’un état HTTP 408 à partir du service de données externe. |
Inscription des plug-ins
Contrairement à un plug-in ordinaire, vous utiliserez uniquement l’outil d’inscription de plug-in (PRT) pour inscrire 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. Au lieu d’inscrire des étapes, vous allez configurer votre fournisseur de données à l’aide des tableaux suivants.
| Table | 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, vos plug-ins sont inscrits à l’aide du PRT et les données de configuration correctes sont définies dans la table EntityDataProvider , votre table virtuelle commence à répondre aux demandes.
Plus d’informations : Création d’un fournisseur de données et ajout de plug-ins au fournisseur
Débogage de plug-ins
Un fournisseur de tables virtuelles personnalisées est un type de plug-in. Utilisez les informations de ces rubriques pour déboguer des plug-ins pour les fournisseurs de tables virtuelles personnalisées : Déboguer des plug-ins et tutoriel : Déboguer un plug-in.
Voir aussi
Commencez avec les tables virtuelles
Considérations relatives à l’API des tables virtuelles
Exemple : plug-in générique fournisseur de données des tables virtuelles