Consideracions d'API per a taules virtuals

Dues grans categories de canvis en el sistema de definició de taules s'associen amb la introducció de taules virtuals (també conegudes com a entitats virtuals) a Microsoft Dataverse:

  • Addició d'un nou assemblador, espais de noms, classes i altres tipus per donar suport al desenvolupament de proveïdors de dades de taules virtuals personalitzats
  • Canvis a la plataforma bàsica, incloent-hi algunes altres propietats per donar suport al mapeig extern de fonts de dades, i modificació del comportament de propietats existents de taules i columnes que reflecteixen les limitacions de la implementació inicial d'aquesta funcionalitat

Dynamics 365 Assemblatge de l'SDK de dades

L'assemblatge Dynamics 365 Data SDK, Microsoft.Xrm.Sdk.Data.dll, conté tipus per ajudar en la creació de proveïdors de dades virtuals personalitzats. Comprèn els espais de noms següents:

Espai de nom Descripció
Microsoft.Xrm.Sdk.Data Espai de noms base que conté alguns tipus comuns, com ara l'enumeració AllowedQueryOptions
Microsoft.Xrm.Sdk.Data.CodeGen Conté classes i interfícies que admeten la reflexió dinàmica, la coincidència de tipus i la generació de codi. Utilitzat principalment pel motor del proveïdor intern.
Microsoft.Xrm.Sdk.Data.Converters Un conjunt de classes per convertir els tipus XRM estàndard als seus corresponents tipus fonamentals .NET
Microsoft.Xrm.Sdk.Data.Exceptions Un conjunt de classes d'excepció que representen errors que es poden produir durant la resolució de valors en temps d'execució. Tots es deriven de Microsoft.Xrm.Sdk.SdkExceptionBase.
Microsoft.Xrm.Sdk.Data.Expressions Classes per ajudar a implementar les transformacions de consulta suportades, com FILTER, JOIN i ORDER.
Microsoft.Xrm.Sdk.Data.Mappings Classes i interfícies que creen l'assignació de tipus de definició de taula virtual a tipus externs.
Microsoft.Xrm.Sdk.Data.Visitors Classes que implementen el patró de visitant per realitzar operacions específiques al paràmetre QueryExpression passat al proveïdor de dades durant les sol·licituds RetrieveMultiple . Proporciona suport específic tant per a consultes genèriques com per al processament basat en LINQ. Aquestes classes es deriven de Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase.

Aquests espais de noms es troben a l'assemblador inclòs en aquest paquet NuGet: Microsoft.CrmSdk.Data.

Canvis a la plataforma principal

Els canvis següents als tipus de referència estàndard de Dataverse admeten taules virtuals.

Noves taules

Dataverse exposa proveïdors i fonts de dades de taules virtuals com les següents taules: EntityDataProvider i EntityDataSource.

Noves propietats de definició de taula

S'han afegit quatre propietats noves a la EntityMetadata classe:

Propietat Descripció
DataProviderId GUID que identifica el proveïdor de dades de la taula virtual associat
DataSourceId GUID que identifica la font de dades de la taula virtual associada
ExternalName Nom d'aquest tipus a la font de dades externa
ExternalCollectionName Nom plural per a aquest tipus, utilitzat a la interfície d'usuari i per admetre l'accés OData

S'han afegit dues propietats noves a la AttributeMetadata classe:

Propietat Descripció
ExternalName Nom del tipus a la font de dades externa
IsDataSourceSecret Indica si el camp conté informació sensible

La ExternalName propietat també es va afegir a les OptionMetadata classes i OptionSetMetadata Aquests noms externs ajuden a la correspondència de la font de dades externa, especificant el nom del tipus associat a la font de dades externa. Aquestes propietats només s'utilitzen per a taules virtuals. Per a un tipus d'entitat personalitzada integrat o estàndard, aquests noms externs han de ser null.

Creació de taules virtuals

L'enfocament per crear mitjançant programació un tipus de taula virtual difereix lleugerament d'una creació de tipus d'entitat personalitzada estàndard en què

  • Si coneixes el proveïdor de dades associat (i opcionalment la font de dades) en el moment de la creació, especifica aquests valors.
  • Si no coneixes el proveïdor de dades per a aquest tipus, configura DataProviderId i 7015A531-CC0D-4537-B5F2-C882A1EB65AD configura DataSourceId a null. Abans d'utilitzar instàncies d'aquest tipus en temps d'execució, assigna valors adequats a aquestes propietats.

Quan registres un plugin, crees dues taules noves, EntityDataProvider i, opcionalment EntityDataSource, . Els seus respectius IDs, entitydataproviderid i entitydatasourceid, representen aquests GUIDs obligatoris. (Si no, els desenvolupadors rarament necessiten accedir directament a aquests tipus personalitzats.) Cal tenir en compte que DataSource conté la propietat entitydataproviderid que ha de coincidir amb el tipus corresponent de DataProvider o bé es llança una excepció en temps d'execució.

Advertiment

Les taules estàndard (no virtuals) han de tenir els valors associats DataProviderId i DataSourceId establerts als seus valors per defecte (null), en cas contrari es llança una excepció en temps d'execució. Un cop creat, no pots convertir d'un tipus no virtual a un tipus virtual, o a l'inrevés.

Canvis en el comportament de la propietat de definició de taula

La taula següent detalla com canvia el comportament de les propietats estàndard d'EntityMetadata quan s'apliques a taules virtuals. Algunes propietats no són vàlides per a taules virtuals, mentre que d'altres són limitades en abast o valor.

Propietat de metadades Aplica? Notes
ActivityTypeMask invàlid Sempre 0
Atributs vàlid
AutoCreateAccessTeams invàlid Sempre fals
AutoRouteToOwnerQueue invàlid Sempre fals, les cues no són compatibles.
CanBeInManyToMany vàlid
CanBePrimaryEntityInRelationship vàlid
CanBeRelatedEntityInRelationship vàlid
CanChangeHierarchicalRelationship invàlid Les relacions sempre falses i jeràrquiques no estan recolzades.
CanChangeTrackingBeEnabled invàlid Sempre és fals, el seguiment de canvis i els valors d'auditoria no són compatibles.
CanCreateAttributes vàlid
CanCreateCharts invàlid Sempre fals
CanCreateForms vàlid
CanCreateViews vàlid
CanEnableSyncToExternalSearchIndex invàlid Sempre fals
CanModifyAdditionalSettings vàlid
CanTriggerWorkflow invàlid Sempre fals, els fluxos de treball no es poden activar.
Seguiment de canvis activat invàlid Sempre fals
NomEsquema de la col·lecció vàlid
DaysSinceRecordLastModified invàlid Sempre nul o 0
Descripció vàlid
DisplayCollectionName vàlid
Nom de visualització vàlid
EnforceStateTransitions invàlid El codi d'estat i l'estat no són compatibles.
EntityColor vàlid
EntityHelpUrl vàlid
EntityHelpUrlEnabled vàlid
EntitySetName vàlid
ExtensionData invàlid Propietat obsoleta
Ha canviat vàlid
IconLargeName vàlid
IconMediumName vàlid
IconSmallName vàlid
Versió introduïda vàlid
ÉsActivitat invàlid Sempre és fals, les activitats no estan suportades.
IsActivityParty invàlid Sempre fals
IsAIRUpdat invàlid Obsolet
IsAuditEnabled invàlid Sempre fals, l'auditoria no està suportada.
Està disponible fora de línia invàlid Sempre fals, l'ús fora de línia no està suportat.
IsBusinessProcessEnabled invàlid Sempre fals, els processos empresarials no estan suportats.
IsChildEntity invàlid Sempre fals, totes les taules virtuals són propietat de l'organització.
IsConnectionsEnabled vàlid
IsCustomEntity vàlid
ÉsPersonalitzable vàlid
IsDocumentManagementEnabled vàlid
IsDocumentRecommendationsEnabled invàlid Sempre fals, aquesta nova funció no està suportada.
IsDuplicateDetectionEnabled invàlid Sempre fals, però es pot realitzar la detecció de duplicats a la font de dades.
IsEnabledForCharts Limitat Només per a clàusules Fetch admeses.
IsEnabledForTrace vàlid
ÉsImportable vàlid
IsInteractionCentricEnabled vàlid
IsIntersect vàlid
IsKnowledgeManagementEnabled invàlid Sempre fals, la integració de la gestió del coneixement no està suportada.
IsMailMergeEnabled vàlid
Està gestionat vàlid
És mapejable vàlid
IsOfflineInMobileClient invàlid Sempre fals, els valors de les taules virtuals no estan emmagatzemats en memòria cau per a ús fora de línia.
IsOneNoteIntegrationEnabled vàlid
IsOptimisticConcurrencyEnabled invàlid Sempre fals, la concurrència s'ha d'implementar a la font de dades.
És privat vàlid
IsQuickCreateEnabled vàlid
IsReadOnlyInMobileClient vàlid
IsRenameable vàlid
IsSLAEnabled invàlid Sempre fals
IsStateModelAware invàlid
IsValidForAdvancedFind vàlid
IsValidForQueue vàlid
IsVisibleInMobile vàlid
IsVisibleInMobileClient vàlid
Claus invàlid No es suporten tecles alternatives
Nom de la col·lecció lògica vàlid
Nom lògic vàlid
ManyToManyRelationships vàlid
ManyToOneRelationships vàlid No s'admet entre dues taules virtuals.
MetadataId vàlid
MòbilFora de líniaFiltres invàlid Sempre fals, l'ús fora de línia no està suportat.
ObjectTypeCode vàlid
OneToManyRelationships vàlid
Tipus de propietat invàlid Sempre propietat de l'organització
PrimaryIdAttribute vàlid
PrimaryImageAttribute vàlid
Atribut NomPrimari vàlid
Privilegis invàlid
RecurrenceBaseEntityLogicalName invàlid
InformeViewName invàlid
Nom de l'esquema vàlid
SyncToExternalSearchIndex invàlid

Canvis en el comportament de la propietat de definició de columna

La taula següent explica com canvia el comportament de les propietats estàndard d'AttributeMetadata quan s'apliques a taules virtuals. Algunes propietats no són vàlides per a taules virtuals, mentre que d'altres tenen un abast o valor limitats.

Propietat de metadades Aplica? Notes
ColumnNumber invàlid
Versió obsoleta vàlid
Descripció vàlid
Nom de visualització vàlid
EntityLogicalName vàlid
ExtensionData invàlid
Ha canviat vàlid
HeretaDe vàlid
Versió introduïda vàlid
IsAuditEnabled invàlid Sempre fals, l'auditoria no està suportada.
IsCustomAttribute vàlid
ÉsPersonalitzable vàlid
IsFilterable vàlid
IsGlobalFilterEnabled vàlid
És lògic vàlid
Està gestionat vàlid
IsPrimaryId vàlid
IsPrimaryName vàlid
IsRenameable vàlid
IsSearchable vàlid
Està segur invàlid Sempre fals, la seguretat a nivell de camp no està suportada.
IsSortableEnabled vàlid
IsValidForAdvancedFind vàlid
IsValidForCreate vàlid
IsValidForRead vàlid
IsValidForUpdate vàlid
LinkedAttributeId vàlid
Nom lògic vàlid
MetadataId vàlid
Nivell obligatori vàlid
Nom de l'esquema vàlid
Tipus d'origen invàlid Sempre no es donen suport a 0, valors calculats o de rollup.

Consulteu també

Introducció a les entitats virtuals
Proveïdors de dades de taules virtuals personalitzades
Exemple: complement genèric del proveïdor de dades de la taula virtual