Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Ved hjelp av Microsoft Dataverse Data SDK kan .NET utviklere opprette egendefinerte virtuelle tabelldataleverandører for å integrere eksterne datakildetyper som ikke støttes av en eksisterende dataleverandør. Hver dataleverandør består av et gjenbrukbart sett med dataverse plugin-moduler som implementerer de støttede CRUD-operasjonene. For hver virtuelle tabell, også kjent som en virtuell enhet, kan utviklere opprette plugin-moduler og registrere dem som representerer hver av operasjonene Opprett, Oppdater, Hent, HentMultiple og Slett . Denne delen gir grunnleggende informasjon om dataleverandører og tilnærminger til utvikling av egendefinerte leverandører, inkludert eksempelkode.
Note
I stedet for å opprette en egendefinert datakildeleverandør, bør du vurdere å tilpasse datakilden til en eksisterende dataleverandør. Hvis du for eksempel oppretter et OData v4-grensesnitt til den eksterne datakilden, kan du få direkte tilgang til det ved hjelp av den angitte standard OData v4-dataleverandør, som støtter CRUD-operasjoner. Mekanismen for å legge til dette REST-grensesnittet varierer med den underliggende datatjenesteteknologien. Se for eksempel WCF Data Services 4.5. OData har bred bransjestøtte, med et bredt spekter av dedikerte verktøy og kompatible teknologier.
Forutsetning
Egendefinerte dataleverandører krever betydelige utviklingsressurser for å opprette og vedlikeholde. Du må ha grunnleggende kunnskap om følgende områder:
- Det eksterne datakildeskjemaet og tilknyttede datatilgangsteknikker. Denne domenekunnskapen er spesifikk for den eksterne datakildetypen.
- Datavers definisjonsskjema: Mer informasjon: Arbeid med tabell- og kolonnedefinisjoner ved hjelp av kode.
- Rammeverk for datavers hendelse: Mer informasjon: Event Framework.
- Arkitektur og utvikling av datavers plugin-moduler: Mer informasjon: Bruk plugin-moduler til å utvide forretningsprosesser.
Samlingen Microsoft.Xrm.Sdk.Data.dll er tilgjengelig som en NuGet-pakke: Microsoft.CrmSdk.Data
Kategorier av leverandører
Du kan opprette to generelle kategorier av dataleverandører ved hjelp av SDK-samlinger for virtuelle tabelldata: generisk eller målrettet. Tabellen nedenfor beskriver disse tilnærmingene og samsvarer med dem med utviklingsmodellen for dataleverandøren som passer best for hver fremgangsmåte.
| Kategori | Utviklingsmodell | Beskrivelse |
|---|---|---|
| Generisk | «Bare metal»-leverandør | Disse leverandørene oversetter fleksibelt FetchXML-spørringsuttrykk til den tilknyttede forespørselen til den eksterne datakilden, og returnerer deretter de resulterende postene. Du kan bruke en slik leverandør på nytt for alle forekomster av denne datakildetypen. Denne tilnærmingen er den mest generelle, men er mer komplisert å utvikle. Hvis skjemaet for datakilden endres, trenger du bare å tilordne de berørte virtuelle tabellene på nytt. |
| Målrettet | LINQ-leverandør for kjent skjema | En slik leverandør oversetter spørringer til det tilknyttede LINQ-kallet til en kjent, eksisterende datakildeforekomst. Datakilden må være en LINQ-leverandør som beskrevet i artikkelen Aktivere en datakilde for LINQ-spørring. Denne tilnærmingen er begrenset til en bestemt datakildeforekomst, men krever mye mindre koding. Hvis skjemaet for datakilden endres, må du oppdatere og gjenoppbygge dataleverandøren. |
Standard OData v4-dataleverandør og Azure Cosmos DB-dataleverandør er eksempler på generiske leverandører.
Fremgangsmåte for å bruke en egendefinert dataleverandør
Hvis du vil opprette en løsning for virtuell tabelldataleverandør som du kan importere til dataverse programmer, gjør du følgende:
- Utvikle tilleggs-DLL-en for den egendefinerte dataleverandøren eller et sett med DLL-er.
- Registrer den egendefinerte dataleverandøren med dataverstjenesten ved hjelp av plugin-modulregistreringsverktøyet (PRT).
- Opprett en dataleverandørløsning.
- Tilpass datakildetabellen slik at den gjenspeiler datatypen eller den bestemte forekomsten.
- Eksporter løsningen for den egendefinerte dataleverandøren.
Hvis du vil ha mer informasjon, kan du se Eksempel: Egendefinert virtuell tabellleverandør med CRUD-operasjoner.
Plugin-modulutvikling
Fordi virtuelle tabeller støtter CRUD-operasjoner, skriver du dataleverandøren som en plugin-modul som du registrerer på hendelsene Opprett, Oppdater, Hent, HentMultiple og Slett . Hver hendelse inneholder informasjon i utførelseskonteksten som beskriver typen data som skal returneres.
| Hendelse | Kjøringskontekst |
|---|---|
| Gjenfinne | Beskriver hvilken tabell som skal hentes, i tillegg til kolonnene og eventuelle relaterte tabeller som skal inkluderes. |
| Hent flere | Inneholder et QueryExpression objekt som definerer spørringen. Rammeverket inneholder en QueryExpressionVisitor-klasse som er utformet for å undersøke ulike deler av spørringsuttrykkstreet. |
For begge hendelsene må du:
- Konverter den respektive informasjonen i utførelseskonteksten til en spørring som fungerer for den eksterne datakilden.
- Hent dataene fra det eksterne systemet.
- For Hent konverterer du dataene til en Entity– ellers konverterer du dem til en for EntityCollection. Datavers returnerer dette resultatet til brukeren som kjører spørringen.
Klassene i Microsoft.Xrm.Sdk.Data navneområdet gir et rammeverk for å hjelpe deg med å tilordne datavers spørringsinformasjon fra utførelseskonteksten til en spørring i formatet som passer for den eksterne datakilden. Dette rammeverket hjelper deg med å konvertere dataene som returneres til de riktige Entity eller EntityCollection typene som forventes av Dataverse-plattformen.
Unntak for dataleverandør
Hvis koden din ikke kan gi det forventede resultatet, utløser du den riktige feilen. Navneområdet Microsoft.Xrm.Sdk.Data.Exceptions inneholder følgende unntaksklasser, avledet fra SdkExceptionBase, som du kan bruke til dette formålet:
| Unntaksklasse | Beskrivelse |
|---|---|
| AuthenticationException | Det oppstod en feil under sikkerhetsgodkjenning til den eksterne datakildetjenesten. FOR eksempel HTTP-status 401 mottatt fra den eksterne datatjenesten. Forekommer vanligvis fordi gjeldende bruker ikke har riktige rettigheter eller tilkoblingsinformasjonen i den tilknyttede EntityDataSource er feil. |
| EndpointException | Endepunktkonfigurasjonen i datakildetabellen er ugyldig eller endepunktet finnes ikke. |
| GenericDataAccessException | En generell datatilgangsfeil som brukes når feilen ikke tilordnes til et mer spesifikt unntak. |
| InvalidMetadataException | |
| InvalidQueryException | Den angitte spørringen er ugyldig. Den inneholder for eksempel en ugyldig setningskombinasjon eller sammenligningsoperator som ikke støttes. |
| ObjectNotFoundException | Den angitte posten i den eksterne datakilden finnes ikke. |
| TimeoutException | Den eksterne operasjonen ble ikke fullført innen det tillatte tidspunktet. Resultatet av en HTTP-status 408 fra den eksterne datatjenesten. |
Programtilleggsregistrering
I motsetning til en vanlig plugin-modul, kan du bruke plugin-modulregistreringsverktøyet (PRT) til å registrere samlingen og plugin-modulene for hver hendelse. Ikke registrer bestemte trinn. Plugin-modulen kjører i trinn 30, hovedkjernetransaksjonsfasen for operasjonen som ikke er tilgjengelig for vanlige plugin-modultrinn. I stedet for å registrere trinn, konfigurerer du dataleverandøren ved hjelp av tabellen nedenfor.
| Tabell | Beskrivelse |
|---|---|
| EntityDataProvider | Definerer plugin-modulene som skal brukes for hver hendelse og det logiske navnet på datakilden. |
Når du konfigurerer definisjonene for den virtuelle tabellen, registrerer du plugin-modulene ved hjelp av PRT og angir de riktige konfigurasjonsdataene i EntityDataProvider-tabellen . Den virtuelle tabellen begynner å svare på forespørsler.
Hvis du vil ha mer informasjon, kan du se Opprette dataleverandør og legge til plugin-moduler til leverandøren.
Feilsøking av plugin-moduler
En egendefinert leverandør av virtuelle tabeller er en type plugin-modul. Bruk informasjonen i disse artiklene til å feilsøke plugin-moduler for egendefinerte virtuelle tabellleverandører: Feilsøking av plugin-moduler og opplæring: Feilsøke et programtillegg.
Se også
Kom i gang med virtuelle tabeller
API-vurderinger av virtuelle tabeller
Eksempel: Generell plugin-modul for virtuell tabelldataleverandør