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.
Il existe deux grandes catégories de modifications apportées au système de définition de table qui sont associées à l’introduction de tables virtuelles (également appelées entités virtuelles) dans Microsoft Dataverse :
- Ajout d’un nouvel assembly, d’espaces de noms, de classes et d’autres types pour prendre en charge le développement de fournisseurs de données de table virtuelle personnalisées
- Modifications apportées à la plateforme principale, notamment quelques propriétés supplémentaires pour prendre en charge le mappage de source de données externe et la modification des comportements des propriétés de table et de colonne existantes qui reflètent les limitations de l’implémentation initiale de cette fonctionnalité
Assemblage de l'API Dynamics 365 Data
L’assembly du Kit de développement logiciel (SDK) Dynamics 365 Data, Microsoft.Xrm.Sdk.Data.dllcontient des types permettant de créer des fournisseurs de données de table virtuelle personnalisées. Il est composé des espaces de noms suivants :
| Namespace | Descriptif |
|---|---|
| Microsoft.Xrm.Sdk.Data | Espace de noms de base qui contient quelques types courants, comme l’énumération AllowedQueryOptions |
| Microsoft.Xrm.Sdk.Data.CodeGen | Contient les classes et interfaces qui prennent en charge la réflexion dynamique, la correspondance de type et la génération de code. Principalement utilisé par le moteur de fournisseur interne. |
| Microsoft.Xrm.Sdk.Data.Converters | Ensemble de classes pour convertir les types XRM standard en types fondamentaux .NET correspondants |
| Microsoft.Xrm.Sdk.Data.Exceptions | Ensemble de classes d’exception qui représentent les erreurs qui peuvent se produire lors de la résolution des valeurs au moment de l’exécution. Toutes sont dérivées de Microsoft.Xrm.Sdk.SdkExceptionBase. |
| Microsoft.Xrm.Sdk.Data.Expressions | Classes pour aider à l’implémentation des transformations de requête prises en charge, telles que FILTER, JOIN et ORDER. |
| Microsoft.Xrm.Sdk.Data.Mappings | Classes et interfaces qui créent le mappage à partir de types de définition de table virtuelle vers des types externes. |
| Microsoft.Xrm.Sdk.Data.Visitors | Classes qui implémentent le modèle de visiteur pour effectuer des opérations spécifiques sur le paramètre QueryExpression transmis au fournisseur de données pendant les requêtes RetrieveMultiple. Fournit une prise en charge spécifique de la requête générique et du traitement LINQ. Ces classes sont dérivées de Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase. |
Cet assembly est distribué en tant que package NuGet : Microsoft.CrmSdk.Data
Modifications de la plateforme principale
Les modifications suivantes apportées aux types de référence Dataverse standard ont été introduites pour prendre en charge les tables virtuelles.
Nouvelles tables
Dataverse expose les fournisseurs et sources de tables virtuelles en tant que tables suivantes : EntityDataProvider et EntityDataSource.
Nouvelles propriétés de définition de table
Quatre nouvelles propriétés ont été ajoutées à la EntityMetadata classe :
| Propriété | Descriptif |
|---|---|
| DataProviderId | GUID qui identifie le fournisseur de données de table virtuelle associé |
| DataSourceId | GUID qui identifie la source de données de table virtuelle associée |
| ExternalName | Nom de ce type dans la source de données externe |
| ExternalCollectionName | Nom pluriel de ce type, utilisé dans l’interface utilisateur ainsi que pour la prise en charge de l’accès OData |
Deux nouvelles propriétés ont été ajoutées à la AttributeMetadata classe :
| Propriété | Descriptif |
|---|---|
| ExternalName | Nom du type dans la source de données externe |
| IsDataSourceSecret | Indique si le champ contient des informations sensibles |
La propriété ExternalName a également été ajoutée aux classes OptionMetadata et OptionSetMetadata. Ces noms externes aident dans le mappage de source de données externe, en spécifiant le nom du type associé dans la source de données externe. Ces propriétés sont utilisées uniquement pour les tables virtuelles ; pour un type d’entité personnalisé intégré ou standard, ces noms externes doivent être null.
création de tables virtuelles
L’approche de création par programmation d’un type de table virtuelle diffère légèrement de la création d’un type d’entité personnalisé standard dans ce qui suit :
- Si le fournisseur de données associé (et éventuellement la source de données) sont connus au moment de la création, ils sont spécifiés.
- Si le fournisseur de données pour ce type n’est pas connu, au minimum, DataProviderId est défini sur
7015A531-CC0D-4537-B5F2-C882A1EB65AD, et DataSourceId est défini surnull. Des valeurs appropriées doivent être attribuées à ces propriétés avant que les instances de ce type soient utilisées au moment de l’exécution.
Deux nouvelles tables, EntityDataProvider et éventuellement EntityDataSource, seront créées lorsque vous inscrivez un plug-in, ainsi que leur ID respectif, entitydataproviderid et entitydatasourceidreprésentent ces GUID requis. (Sinon, les développeurs ont rarement besoin d’accéder directement à ces types personnalisés.) Notez que DataSource contient la propriété entitydataproviderid qui doit correspondre au type DataProvider correspondant ou qu’une exception d’exécution sera levée.
Avertissement
Les tables standard (non virtuelles) doivent avoir les valeurs de leurs valeurs associées DataProviderId et DataSourceId définies sur leurs valeurs par défaut (null), sinon une exception d’exécution est levée. Une fois créé, vous ne pouvez pas convertir un type non virtuel en type virtuel, ou inversement.
Modifications du comportement des propriétés de définition de table
Le tableau suivant détaille la façon dont le comportement des propriétés EntityMetadata standard sont modifiées lorsqu’elles sont appliquées aux tables virtuelles. Certaines propriétés ne sont pas valides pour les tables virtuelles, tandis que d’autres sont limitées dans l’étendue ou la valeur.
| Propriété de métadonnées | S’applique ? | Remarques |
|---|---|---|
| ActivityTypeMask | non valide | Toujours 0 |
| Attributes | valide | |
| AutoCreateAccessTeams | non valide | Toujours false |
| AutoRouteToOwnerQueue | non valide | Toujours false, les files d’attente ne sont pas prises en charge. |
| CanBeInManyToMany | valide | |
| CanBePrimaryEntityInRelationship | valide | |
| CanBeRelatedEntityInRelationship | valide | |
| CanChangeHierarchicalRelationship | non valide | Toujours false, les relations hiérarchiques ne sont pas prises en charge. |
| CanChangeTrackingBeEnabled | non valide | Toujours false, les valeurs de suivi des modifications et d’audit ne sont pas prises en charge. |
| CanCreateAttributes | valide | |
| CanCreateCharts | non valide | Toujours false |
| CanCreateForms | valide | |
| CanCreateViews | valide | |
| CanEnableSyncToExternalSearchIndex | non valide | Toujours false |
| CanModifyAdditionalSettings | valide | |
| CanTriggerWorkflow | non valide | Toujours false, les workflows ne peuvent pas être déclenchés. |
| ChangeTrackingEnabled | non valide | Toujours false |
| CollectionSchemaName | valide | |
| DaysSinceRecordLastModified | non valide | Toujours null ou 0 |
| Descriptif | valide | |
| DisplayCollectionName | valide | |
| DisplayName | valide | |
| EnforceStateTransitions | non valide | StateCode et Status ne sont pas pris en charge. |
| EntityColor | valide | |
| EntityHelpUrl | valide | |
| EntityHelpUrlEnabled | valide | |
| EntitySetName | valide | |
| ExtensionData | non valide | Propriété déconseillée |
| HasChanged | valide | |
| IconLargeName | valide | |
| IconMediumName | valide | |
| IconSmallName | valide | |
| IntroducedVersion | valide | |
| IsActivity | non valide | Toujours false, les activités ne sont pas prises en charge. |
| IsActivityParty | non valide | Toujours false |
| IsAIRUpdated | non valide | Deprecated |
| IsAuditEnabled | non valide | Toujours false, l’audit n’est pas pris en charge. |
| IsAvailableOffline | non valide | Toujours false, l’utilisation hors connexion n’est pas prise en charge. |
| IsBusinessProcessEnabled | non valide | Toujours false, les processus d’entreprise ne sont pas pris en charge. |
| IsChildEntity | non valide | Toujours false, toutes les tables virtuelles appartiennent à l’organisation. |
| IsConnectionsEnabled | valide | |
| IsCustomEntity | valide | |
| IsCustomizable | valide | |
| IsDocumentManagementEnabled | valide | |
| IsDocumentRecommendationsEnabled | non valide | Toujours false, cette nouvelle fonctionnalité n’est pas prise en charge. |
| IsDuplicateDetectionEnabled | non valide | Toujours false, mais la détection des doublons peut être effectuée sur la source de données. |
| IsEnabledForCharts | limité | Uniquement pour les clauses Fetch prises en charge. |
| IsEnabledForTrace | valide | |
| IsImportable | valide | |
| IsInteractionCentricEnabled | valide | |
| IsIntersect | valide | |
| IsKnowledgeManagementEnabled | non valide | Toujours false, l’intégration de la gestion des connaissances n’est pas prise en charge. |
| IsMailMergeEnabled | valide | |
| IsManaged | valide | |
| IsMappable | valide | |
| IsOfflineInMobileClient | non valide | Toujours false, les valeurs des tables virtuelles ne sont pas mises en cache pour l’utilisation hors connexion. |
| IsOneNoteIntegrationEnabled | valide | |
| IsOptimisticConcurrencyEnabled | non valide | Toujours false, la concurrence doit être implémentée dans la source de données. |
| IsPrivate | valide | |
| IsQuickCreateEnabled | valide | |
| IsReadOnlyInMobileClient | valide | |
| IsRenameable | valide | |
| IsSLAEnabled | non valide | Toujours false |
| IsStateModelAware | non valide | |
| IsValidForAdvancedFind | valide | |
| IsValidForQueue | valide | |
| IsVisibleInMobile | valide | |
| IsVisibleInMobileClient | valide | |
| Keys | non valide | Les clés secondaires ne sont pas prises en charge |
| LogicalCollectionName | valide | |
| LogicalName | valide | |
| ManyToManyRelationships | valide | |
| ManyToOneRelationships | valide | Non pris en charge entre deux tables virtuelles. |
| MetadataId | valide | |
| MobileOfflineFilters | non valide | Toujours false, l’utilisation hors connexion n’est pas prise en charge. |
| ObjectTypeCode | valide | |
| OneToManyRelationships | valide | |
| OwnershipType | non valide | Toujours OrganizationOwned |
| PrimaryIdAttribute | valide | |
| PrimaryImageAttribute | valide | |
| PrimaryNameAttribute | valide | |
| Privilèges | non valide | |
| RecurrenceBaseEntityLogicalName | non valide | |
| ReportViewName | non valide | |
| SchemaName | valide | |
| SyncToExternalSearchIndex | non valide |
Modifications du comportement des propriétés de définition de colonne
Le tableau suivant explique comment le comportement des propriétés AttributeMetadata standard sont modifiées lorsqu’elles sont appliquées aux tables virtuelles. Certaines propriétés ne sont pas valides pour les tables virtuelles, tandis que d’autres sont limitées dans l’étendue ou la valeur.
| Propriété de métadonnées | S’applique ? | Remarques |
|---|---|---|
| ColumnNumber | non valide | |
| DeprecatedVersion | valide | |
| Descriptif | valide | |
| DisplayName | valide | |
| EntityLogicalName | valide | |
| ExtensionData | non valide | |
| HasChanged | valide | |
| InheritsFrom | valide | |
| IntroducedVersion | valide | |
| IsAuditEnabled | non valide | Toujours false, l’audit n’est pas pris en charge. |
| IsCustomAttribute | valide | |
| IsCustomizable | valide | |
| IsFilterable | valide | |
| IsGlobalFilterEnabled | valide | |
| IsLogical | valide | |
| IsManaged | valide | |
| IsPrimaryId | valide | |
| IsPrimaryName | valide | |
| IsRenameable | valide | |
| IsSearchable | valide | |
| IsSecured | non valide | Toujours false, la sécurité au niveau des champs n’est pas prise en charge. |
| IsSortableEnabled | valide | |
| IsValidForAdvancedFind | valide | |
| IsValidForCreate | valide | |
| IsValidForRead | valide | |
| IsValidForUpdate | valide | |
| LinkedAttributeId | valide | |
| LogicalName | valide | |
| MetadataId | valide | |
| RequiredLevel | valide | |
| SchemaName | valide | |
| Type de source | non valide | Toujours 0, les valeurs calculées ou de cumul ne sont pas prises en charge. |
Voir aussi
Démarrer avec les entités virtuelles
Fournisseurs de données de table virtuelle personnalisée
Exemple : plug-in générique fournisseur de données des tables virtuelles