Del via


API-overvejelser i forbindelse med virtuelle tabeller

Der er knyttet to brede kategorier af ændringer til tabeldefinitionssystemet til introduktionen af virtuelle tabeller (også kaldet virtuelle objekter) i Microsoft Dataverse:

  • Tilføjelse af en ny assembly, navneområder, klasser og andre typer for at understøtte udvikling af brugerdefinerede udbydere af virtuelle tabeldata
  • Ændringer af kerneplatformen, herunder et par andre egenskaber, der understøtter tilknytning af eksterne datakilder, og ændring af funktionsmåder for eksisterende tabel- og kolonneegenskaber, der afspejler begrænsningerne i den indledende implementering af denne funktion

Dynamics 365 Data SDK-assemblyen

Dynamics 365 Data SDK-assemblyen, indeholder typer, Microsoft.Xrm.Sdk.Data.dllder kan hjælpe med at oprette brugerdefinerede udbydere af virtuelle tabeldata. Det består af følgende navneområder:

Navneområde Description
Microsoft.Xrm.Sdk.Data Base-navneområde, der indeholder nogle få almindelige typer, såsom enumerationen AllowedQueryOptions
Microsoft.Xrm.Sdk.Data.CodeGen Indeholder klasser og grænseflader, der understøtter dynamisk refleksion, typematchning og generering af kode. Primært bruges af den interne udbyder motor.
Microsoft.Xrm.Sdk.Data.Converters Et sæt klasser, der konverterer XRM-standardtyper til deres tilsvarende grundlæggende .NET-typer
Microsoft.Xrm.Sdk.Data.Exceptions Et sæt undtagelsesklasser, der repræsenterer fejl, der kan opstå under kørselsværdiopløsning. Alle er afledt af Microsoft.Xrm.Sdk.SdkExceptionBase.
Microsoft.Xrm.Sdk.Data.Expressions Klasser, der hjælper med at implementere de understøttede forespørgselstransformationer, f.eks. FILTER, JOIN og ORDER.
Microsoft.Xrm.Sdk.Data.Mappings Klasser og grænseflader, der bygger tilknytningen fra definitionstyper for virtuelle tabeller til eksterne typer.
Microsoft.Xrm.Sdk.Data.Visitors Klasser, der implementerer det besøgende mønster for at udføre bestemte handlinger på parameteren QueryExpression , der overføres til dataprovideren under RetrieveMultiple-anmodninger . Giver specifik understøttelse af både generisk forespørgsel og LINQ-baseret behandling. Disse klasser er afledt af Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase.

Distribuer denne assembly som en NuGet-pakke: Microsoft.CrmSdk.Data.

Ændringer af kerneplatformen

Følgende ændringer af standardreferencetyperne for Dataverse understøtter virtuelle tabeller.

Nye tabeller

Dataverse fremviser virtuelle tabeldataprovidere og -kilder som følgende tabeller: EntityDataProvider og EntityDataSource.

Nye egenskaber for tabeldefinition

Der blev føjet fire nye egenskaber til EntityMetadata klassen:

Egenskab Description
DataProviderId GUID, der identificerer den tilknyttede udbyder af virtuelle tabeldata
DataSourceId GUID, der identificerer datakilden for den tilknyttede virtuelle tabel
ExternalName Navn på denne type i den eksterne datakilde
ExternalCollectionName Flertalsnavn for denne type, der bruges i brugergrænsefladen og til at understøtte OData-adgang

Der blev føjet to nye egenskaber til AttributeMetadata klassen:

Egenskab Description
ExternalName Navnet på typen i den eksterne datakilde
IsDataSourceSecret Angiver, om feltet indeholder følsomme oplysninger

Egenskaben ExternalName blev også føjet til klasserne OptionMetadata og OptionSetMetadata . Disse eksterne navne hjælper den eksterne datakildetilknytning ved at angive navnet på den tilknyttede type i den eksterne datakilde. Disse egenskaber bruges kun til virtuelle tabeller. For en indbygget eller standard brugerdefineret objekttype skal disse eksterne navne være null.

Oprettelse af virtuel tabel

Tilgangen til at oprette en virtuel tabeltype programmeringsmæssigt adskiller sig en smule fra oprettelsen af en brugerdefineret standardenhedstype ved at:

  • Hvis du kender den tilknyttede dataprovider (og eventuelt datakilden) på oprettelsestidspunktet, skal du angive disse værdier.
  • Hvis du ikke kender dataprovideren for denne type, skal du angive DataProviderId til 7015A531-CC0D-4537-B5F2-C882A1EB65AD og indstille DataSourceId til null. Før du bruger forekomster af denne type på kørselstidspunktet, skal du tildele disse egenskaber relevante værdier.

Når du registrerer en plug-in, opretter du to nye tabeller, EntityDataProvider og eventuelt EntityDataSource. Deres respektive id'er entitydataproviderid og entitydatasourceidrepræsenterer disse påkrævede GUID'er. Ellers har udviklere sjældent brug for at få adgang til disse brugerdefinerede typer direkte. Bemærk, at DataSource indeholder den egenskab entitydataproviderid , der skal svare til den tilsvarende DataProvider-type, eller at der udløses en kørselsundtagelse.

Advarsel!

Standardtabeller (ikke-virtuelle) skal have værdierne for deres tilknyttede DataProviderId og DataSourceId angivet til deres standardværdier (null), ellers udløses der en kørselsundtagelse. Når den er oprettet, kan du ikke konvertere fra en ikke-virtuel type til en virtuel type eller omvendt.

Ændringer i funktionsmåden for tabeldefinitionsegenskaber

Følgende tabel indeholder oplysninger om, hvordan funktionsmåden for standardegenskaberne EntityMetadata ændres, når du anvender dem på virtuelle tabeller. Nogle egenskaber er ikke gyldige for virtuelle tabeller, mens andre er begrænset i omfang eller værdi.

Metadataegenskab Gælder? Noter
Aktivitetstypemaske ugyldig Altid 0
Attributter gyldig
AutoOpretAccessTeams ugyldig Altid falsk
AutoRouteToOwnerQueue ugyldig Altid falsk. Køer understøttes ikke.
CanBeInManyToMany gyldig
CanBePrimaryEntityInRelationship gyldig
CanBeRelatedEntityInRelationship gyldig
KanÆndreHierarkiskForhold ugyldig Altid falsk, hierarkiske relationer understøttes ikke.
CanChangeTrackingBeEnabled ugyldig Altid false, ændringssporing og overvågningsværdier understøttes ikke.
CanCreateAttributes gyldig
CanCreateCharts ugyldig Altid falsk
CanCreateForms gyldig
CanCreateViews gyldig
KanAktivereSynkroniseringTilEksternSøgeIndeks ugyldig Altid falsk
CanModifyAdditionalSettings gyldig
CanTriggerWorkflow ugyldig Altid falsk, arbejdsprocesser kan ikke udløses.
ÆndringssporingAktiveret ugyldig Altid falsk
CollectionSchemaName gyldig
AntalDageSidenPostSidstÆndret ugyldig Altid null eller 0
Description gyldig
DisplayCollectionName gyldig
DisplayName gyldig
Gennemtving tilstandsovergange ugyldig StateCode og Status understøttes ikke.
EntitetFarve gyldig
EntityHelpUrl gyldig
EntitetHjælpUrlAktiveret gyldig
EntitySetName gyldig
ExtensionData ugyldig Frarådet egenskab
HarÆndret gyldig
IconLargeName gyldig
IconMediumName gyldig
IconSmallName gyldig
IntroducedVersion gyldig
IsAktivitet ugyldig Altid falsk, aktiviteter understøttes ikke.
IsActivityParty ugyldig Altid falsk
IsAIRUpdated ugyldig Frarådet
IsAuditEnabled ugyldig Altid falsk. Overvågning understøttes ikke.
ErTilgængeligOffline ugyldig Altid falsk. Offlinebrug understøttes ikke.
IsForretningsprocesAktiveret ugyldig Altid falsk, forretningsprocesser understøttes ikke.
IsChildEntity ugyldig Altid falsk. Alle virtuelle tabeller ejes af organisationen.
ErForbindelserAktiveret gyldig
IsCustomEntity gyldig
IsCustomizable gyldig
ErDokumenthåndteringAktiveret gyldig
IsDocumentRecommendationsEnabled ugyldig Altid falsk. Denne nye funktion understøttes ikke.
IsDuplicateDetectionEnabled ugyldig Altid falsk, men detektion af dubletter kan udføres i datakilden.
ErAktiveretForDiagrammer begrænset Kun for understøttede Fetch-delsætninger.
IsEnabledForTrace gyldig
Kan importeres gyldig
IsInteractionCentricEnabled gyldig
IsIntersect gyldig
ErVidensstyring aktiveret ugyldig Altid falsk, integration af videnstyring understøttes ikke.
IsMailMergeEnabled gyldig
IsManaged gyldig
IsMappable gyldig
IsOfflineInMobileClient ugyldig Altid false, virtuelle tabelværdier cachelagres ikke til offlinebrug.
ErOneNoteIntegrationAktiveret gyldig
ErOptimistiskSamtidighedAktiveret ugyldig Altid falsk. Samtidighed skal implementeres i datakilden.
IsPrivate gyldig
ErQuickCreateAktiveret gyldig
IsReadOnlyInMobileClient gyldig
IsRenameable gyldig
IsSLAEnabled ugyldig Altid falsk
IsStateModelAware ugyldig
IsValidForAdvancedFind gyldig
IsValidForQueue gyldig
IsVisibleInMobile gyldig
IsVisibleInMobileClient gyldig
Nøgler ugyldig Alternative nøgler understøttes ikke
LogiskSamlingsnavn gyldig
LogicalName gyldig
ManyToManyRelationships gyldig
MangeToOneRelationships gyldig Understøttes ikke mellem to virtuelle tabeller.
MetadataId gyldig
MobileOfflineFilters ugyldig Altid falsk. Offlinebrug understøttes ikke.
ObjectTypeCode gyldig
OneToManyRelationships gyldig
Ejerskabstype ugyldig Altid organisationejer
PrimærIdAttribut gyldig
PrimaryImageAttribute gyldig
PrimærnavnAttribut gyldig
Rettigheder ugyldig
RecurrenceBasisEntitetLogiskNavn ugyldig
ReportViewName ugyldig
SchemaName gyldig
SyncToExternalSearchIndex ugyldig

Funktionsmåden for kolonnedefinitionsegenskaben ændres

I følgende tabel forklares det, hvordan funktionsmåden for standardegenskaberne AttributeMetadata ændres, når du anvender dem på virtuelle tabeller. Nogle egenskaber er ikke gyldige for virtuelle tabeller, mens andre har begrænset omfang eller værdi.

Metadataegenskab Gælder? Noter
Kolonnenummerering ugyldig
ForældetVersion gyldig
Description gyldig
DisplayName gyldig
EntityLogicalName gyldig
ExtensionData ugyldig
HarÆndret gyldig
InheritsFrom gyldig
IntroducedVersion gyldig
IsAuditEnabled ugyldig Altid falsk. Overvågning understøttes ikke.
IsCustomAttribute gyldig
IsCustomizable gyldig
Kan filtreres gyldig
ErGlobalFilterAktiveret gyldig
IsLogical gyldig
IsManaged gyldig
IsPrimaryId gyldig
IsPrimaryName gyldig
IsRenameable gyldig
IsSearchable gyldig
IsSecured ugyldig Altid falsk, sikkerhed på feltniveau understøttes ikke.
IsSortableAktiveret gyldig
IsValidForAdvancedFind gyldig
IsValidForCreate gyldig
IsValidForRead gyldig
IsValidForUpdate gyldig
LinkedAttributeId gyldig
LogicalName gyldig
MetadataId gyldig
Påkrævet niveau gyldig
SchemaName gyldig
Kildetype ugyldig Altid 0, beregnede værdier eller akkumuleringsværdier understøttes ikke.

Se også

Introduktion til virtuelle objekter
Brugerdefinerede virtuelle tabeldataprovidere
Eksempel: Plug-in til generisk virtuel tabeldataprovider