Considérations sur les tables virtuelles
Il existe deux grandes catégories de modifications du système de définition de table qui sont associées à l’introduction des 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 personnalisés de données de tables virtuelles
- Modifications de la plateforme principale, notamment quelques propriétés supplémentaires pour prendre en charge le mappage de la source de données externe, et modifications du comportement des propriétés de table et de colonne existantes qui reflètent les limitations de l’implémentation initiale de cette fonctionnalité
Assembly du SDK des données Dynamics 365
L’assembly du SDK des données des applications Dynamics 365 for Customer Engagement, Microsoft.Xrm.Sdk.Data.dll
, contient des types pour aider à la création de fournisseurs personnalisés de données de tables virtuelles. Il est composé des espaces de noms suivants :
Espace de noms | Description |
---|---|
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 des types de définition de tables virtuelles en 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 assemblage est distribué comme package NuGet : Microsoft.CrmSdk.Data
Modifications de la plateforme principale
Les modifications suivantes des types de référence Dataverse standard ont été introduites pour prendre en charge les tables virtuelles.
Nouvelles tables
Dataverse expose les sources et les fournisseurs de données de table virtuelle sous la forme des tables suivantes : EntityDataProvider et EntityDataSource
.
Nouvelles propriétés de définition de table
Quatre nouvelles propriétés ont été ajoutées à la classe EntityMetadata :
Propriété | Description |
---|---|
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é |
ExternalName | Nom pour ce type dans la source de données externes |
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 classe AttributeMetadata :
Propriété | Description |
---|---|
ExternalName | Nom de ce type dans la source de données externes |
IsDataSourceSecret | Indique si le champ contient des informations confidentielles |
La propriété ExternalName
a également été ajoutée aux classes OptionMetadata et OptionSetMetadata. Ces noms externes aident au mappage de la source de données externe, en spécifiant le nom du type associé à la source de données externe. Ces propriétés sont uniquement utilisées pour les tables virtuelles ; pour un type d’entité personnalisée intégrée ou standard, ces noms externes doivent avoir la valeur null
.
création de table virtuelle
L’approche pour créer par programme un type de table virtuelle diffère légèrement de la création d’un type d’entité personnalisée standard :
- 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
, sont créés lorsque vous enregistrez un plug-in, et leurs ID respectifs, entitydataproviderid
et entitydatasourceid
, représentent les 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 ; à défaut, une exception est levée au moment de l’exécution.
Avertissement
Dans les tables standards (non virtuelles), les valeurs de DataProviderId
et DataSourceId
doivent être définies sur les valeurs par défaut (null
), sinon une exception est levée au moment de l’exécution. 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écrit comment le comportement des Propriétés EntityMetadata standard est modifié pour les tables virtuelles. Certaines propriétés ne sont pas valides pour les tables virtuelles, tandis que d’autres sont limitées en étendue ou valeur.
Propriété de métadonnées | S’applique ? | Remarques |
---|---|---|
ActivityTypeMask | invalid | Toujours 0 |
Attributs | valide | |
AutoCreateAccessTeams | invalid | Toujours false |
AutoRouteToOwnerQueue | invalid | Toujours false, les files d’attente ne sont pas prises en charge. |
CanBeInManyToMany | valide | |
CanBePrimaryEntityInRelationship | valide | |
CanBeRelatedEntityInRelationship | valide | |
CanChangeHierarchicalRelationship | invalid | Toujours false, les relations hiérarchiques ne sont pas prises en charge. |
CanChangeTrackingBeEnabled | invalid | Toujours false, les valeurs de suivi des modifications et d’audit ne sont pas prises en charge. |
CanCreateAttributes | valide | |
CanCreateCharts | invalid | Toujours false |
CanCreateForms | valide | |
CanCreateViews | valide | |
CanEnableSyncToExternalSearchIndex | invalid | Toujours false |
CanModifyAdditionalSettings | valide | |
CanTriggerWorkflow | invalid | Toujours false, les workflows ne peuvent pas être déclenchés. |
ChangeTrackingEnabled | invalid | Toujours false |
CollectionSchemaName | valide | |
DaysSinceRecordLastModified | invalid | Toujours null ou 0 |
Description | valide | |
DisplayCollectionName | valide | |
DisplayName | valide | |
EnforceStateTransitions | invalid | StateCode et Status ne sont pas pris en charge. |
EntityColor | valide | |
EntityHelpUrl | valide | |
EntityHelpUrlEnabled | valide | |
EntitySetName | valide | |
ExtensionData | invalid | Propriété déconseillée |
HasChanged | valide | |
IconLargeName | valide | |
IconMediumName | valide | |
IconSmallName | valide | |
IntroducedVersion | valide | |
IsActivity | invalid | Toujours false, les activités ne sont pas prises en charge. |
IsActivityParty | invalid | Toujours false |
IsAIRUpdated | invalid | Déconseillé |
IsAuditEnabled | invalid | Toujours false, l’audit n’est pas pris en charge. |
IsAvailableOffline | invalid | Toujours false, l’utilisation hors connexion n’est pas prise en charge. |
IsBusinessProcessEnabled | invalid | Toujours false, les processus d’entreprise ne sont pas pris en charge. |
IsChildEntity | invalid | Toujours false, toutes les tables virtuelles appartiennent à l’organisation. |
IsConnectionsEnabled | valide | |
IsCustomEntity | valide | |
IsCustomizable | valide | |
IsDocumentManagementEnabled | valide | |
IsDocumentRecommendationsEnabled | invalid | Toujours false, cette nouvelle fonctionnalité n’est pas prise en charge. |
IsDuplicateDetectionEnabled | invalid | Toujours false, mais la détection des doublons peut être effectuée sur la source de données. |
IsEnabledForCharts | limited | Uniquement pour les clauses Fetch prises en charge. |
IsEnabledForTrace | valide | |
IsImportable | valide | |
IsInteractionCentricEnabled | valide | |
IsIntersect | valide | |
IsKnowledgeManagementEnabled | invalid | Toujours false, l’intégration de la gestion des connaissances n’est pas prise en charge. |
IsMailMergeEnabled | valide | |
IsManaged | valide | |
IsMappable | valide | |
IsOfflineInMobileClient | invalid | Toujours false, les valeurs des tables virtuelles ne sont pas mises en cache pour l’utilisation hors connexion. |
IsOneNoteIntegrationEnabled | valide | |
IsOptimisticConcurrencyEnabled | invalid | Toujours false, la concurrence doit être implémentée dans la source de données. |
IsPrivate | valide | |
IsQuickCreateEnabled | valide | |
IsReadOnlyInMobileClient | valide | |
IsRenameable | valide | |
IsSLAEnabled | invalid | Toujours false |
IsStateModelAware | invalid | |
IsValidForAdvancedFind | valide | |
IsValidForQueue | valide | |
IsVisibleInMobile | valide | |
IsVisibleInMobileClient | valide | |
Clés | invalid | 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 | invalid | Toujours false, l’utilisation hors connexion n’est pas prise en charge. |
ObjectTypeCode | valide | |
OneToManyRelationships | valide | |
OwnershipType | invalid | Toujours OrganizationOwned |
PrimaryIdAttribute | valide | |
PrimaryImageAttribute | valide | |
PrimaryNameAttribute | valide | |
Privilèges | invalid | |
RecurrenceBaseEntityLogicalName | invalid | |
ReportViewName | invalid | |
SchemaName | valide | |
SyncToExternalSearchIndex | invalid |
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 est modifié pour les tables virtuelles. Certaines propriétés ne sont pas valides pour les tables virtuelles, tandis que d’autres sont limitées en étendue ou valeur.
Propriété de métadonnées | S’applique ? | Remarques |
---|---|---|
ColumnNumber | invalid | |
DeprecatedVersion | valide | |
Description | valide | |
DisplayName | valide | |
EntityLogicalName | valide | |
ExtensionData | invalid | |
HasChanged | valide | |
InheritsFrom | valide | |
IntroducedVersion | valide | |
IsAuditEnabled | invalid | 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 | invalid | 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 | |
SourceType | invalid | Toujours 0, les valeurs calculées ou de cumul ne sont pas prises en charge. |
Voir aussi
Se familiariser avec les entités virtuelles
Fournisseurs de données de tables virtuelles personnalisées
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é).