Partager via


Considérations relatives à l’API des tables virtuelles

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 sur null. 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