Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe des Microsoft Dataverse Data SDK haben .NET-Entwickler die Möglichkeit, benutzerdefinierte virtuelle Tabellendatenanbieter zu erstellen, um externe Datenquellentypen zu integrieren, die von einem vorhandenen Datenanbieter nicht unterstützt werden. Jeder Datenanbieter besteht aus einem wiederverwendbaren Satz von Dataverse-Plug-Ins, die die unterstützten CRUD-Vorgänge implementieren. Für jede virtuelle Tabelle, auch als virtuelle Entität bezeichnet, können Entwickler Plug-Ins erstellen und registrieren, die die einzelnen Vorgänge "Erstellen", "Aktualisieren", "Abrufen", "RetrieveMultiple" und "Löschen" darstellen. Dieser Abschnitt enthält grundlegende Informationen zu Datenanbietern und Ansätzen zur Entwicklung von benutzerdefinierten Anbietern, einschließlich Beispielcode.
Hinweis
Alternativ zum Erstellen eines benutzerdefinierten Datenquellenanbieters, sollten Sie erwägen, die Datenquelle an einen vorhandenen Datenanbieter anzupassen. Wenn Sie beispielsweise eine OData v4-Schnittstelle zu Ihrer externen Datenquelle erstellen, können Sie direkt mit dem bereitgestellten OData v4-Datenanbieter darauf zugreifen, der CRUD-Vorgänge ebenfalls unterstützt. Die Funktion zum Hinzufügen dieser REST-Schnittstelle variiert nach der zugrunde liegenden Datendiensttechnologie, beispielsweise WCF Data Services 4.5. OData hat breiten Branchesupport, mit einer breiten Palette von dedizierten von Tools und kompatiblen Technologien.
Voraussetzungen
Benutzerdefinierte Datenanbieter erfordern erhebliche Entwicklungsressourcen, um sie zu erstellen und zu warten. Sie benötigen mindestens grundlegende Kenntnisse der folgenden Bereiche:
- Das externe Datenquellenschema und die zugeordneten Datenzugriffstechniken. Dies Domänenwissen ist spezifisch für den externem Datenquellentyp.
- Dataverse-Definitionsschema: Weitere Informationen: Arbeiten mit Tabellen- und Spaltendefinitionen mithilfe von Code.
- Dataverse-Ereignisframework: Weitere Informationen: Event Framework.
- Dataverse Plug-In-Architektur und -Entwicklung: Weitere Informationen: Verwenden Sie Plug-Ins, um Geschäftsprozesse zu erweitern.
Die Microsoft.Xrm.Sdk.Data.dll Assembly ist als NuGet-Paket verfügbar: Microsoft.CrmSdk.Data
Kategorien von Anbietern
Es gibt zwei allgemeine Kategorien von Datenanbietern, die Sie mit den Assemblys für virtuelle Tabellendaten-SDK erstellen können: generisch oder gezielt. Die folgende Tabelle beschreibt nur diese beiden Ansätze und ordnet sie dem Datenanbieterentwicklungsmodell zu, das für diesen Ansatz bestgeeignet ist.
| Kategorie | Entwickler-Modell | Beschreibung |
|---|---|---|
| Generisch | „Bare Metal“-Anbieter | Diese Anbieter können FetchXML-Abfrageausdrücke flexibel in die zugeordnete Anforderung in die externe Datenquelle übersetzen und dann die resultierenden Datensätze zurückgeben. Solch ein Anbieter kann für alle Instanzen des Datenquellentyps wiederverwendet werden. Diese Methode ist am allgemeinsten, jedoch kompliziert zu entwickeln. Wenn sich das Schema der Datenquelle ändert, müssen die betroffenen virtuellen Tabellen nur neu zugeordnet werden. |
| Ausgerichtet | LINQ-Anbieter für bekanntes Schema | Ein solcher Anbieter übersetzt nur knapp Abfragen an den zugeordneten LINQ-Anruf an eine vertraute, vorhandene Datenquelleninstanz. Die Datenquelle sollte ein LINQ-Anbieter sein, wie in diesem Thema beschrieben Aktivieren einer Datenquelle für LINQ-Abfragen. Diese Methode ist auf eine bestimmte Datenquelleninstanz eingeschränkt, es ist aber wesentlich weniger Codierung erforderlich. Wenn das Schema der Datenquelle geändert wird, muss der Datenanbieter aktualisiert und neu erstellt werden. |
Der Standard-OData v4-Datenanbieter und der Azure Cosmos DB-Datenanbieter sind Beispiele für generische Anbieter.
Schritte, um einen benutzerdefinierten Datenanbieter zu verwenden
Es gibt mehrere Schritte, die zum Erstellen einer Lösung für einen virtuellen Tabellendatenanbieter erforderlich sind, die in Ihre Dataverse-Anwendungen importiert werden kann:
- Entwickeln des benutzerdefinierten Datenanbieter-Plug-Ins in DLL (oder ein Satz von DLLs).
- Registrieren Sie den benutzerdefinierten Datenanbieter mit Ihrem Dataverse-Dienst mithilfe des Plug-In-Registrierungstools (PRT).
- Erstellen einer Datenanbieterlösung.
- Passen Sie die Datenquellentabelle an, um Ihren Datentyp oder ihre bestimmte Instanz widerzuspiegeln.
- Exportieren Sie die benutzerdefinierte Datenanbieterlösung.
Weitere Informationen : Beispiel: Benutzerdefinierter anbieter für virtuelle Tabellen mit CRUD-Vorgängen
Plug-In-Entwicklung
Da virtuelle Tabellen CRUD-Vorgänge unterstützen, schreiben Sie den Datenanbieter in Form eines Plug-Ins, das in den Ereignissen Create, Update, RetrieveMultiple und Delete registriert ist. Jedes jeweilige Ereignis enthält Informationen im Ausführungskontext, die die Art von Daten beschreiben, die zurückzugeben sind.
| Event | Ausführungskontext |
|---|---|
| Abrufen | Beschreibt, welche Tabelle abgerufen werden soll, sowie die Spalten und alle verknüpften Tabellen, die einbezogen werden sollen. |
| RetrieveMultiple | Enthält ein QueryExpression Objekt, das die Abfrage definiert. Das Framework enthält eine QueryExpressionVisitor-Klasse, die dazu konzipiert ist, um verschiedene Teile der Abfrageausdruckstruktur zu überprüfen. |
Für beide Ereignisse müssen Sie:
- Konvertieren Sie die entsprechenden Informationen im Ausführungskontext in eine Abfrage, die für Ihre externe Datenquelle funktioniert.
- Abrufen von Daten aus dem externen System.
- Konvertieren Sie für Abrufen die Daten in ein Entity; andernfalls konvertieren Sie sie für RetrieveMultiple in ein EntityCollection. Dieses Ergebnis wird über die Dataverse-Plattform an den Benutzer zurückgegeben, der die Abfrage ausführt.
Die Klassen im Microsoft.Xrm.Sdk.Data Namespace stellen ein Framework bereit, das bei der Zuordnung der Dataverse-Abfrageinformationen aus dem Ausführungskontext zu einer Abfrage im Format unterstützt, das für Ihre externe Datenquelle geeignet ist. Dieses Framework hilft Ihnen, die von der Dataverse-Plattform erwarteten Daten in die entsprechenden Entity oder EntityCollection Typen zu konvertieren.
Datenanbieterausnahmen
Wenn aus irgendeinem Grund Ihr Code nicht das erwartete Ergebnis erzielen kann, müssen Sie den entsprechenden Fehler auslösen. Der Microsoft.Xrm.Sdk.Data.Exceptions Namespace enthält die folgenden Ausnahmeklassen, die von SdkExceptionBasediesem abgeleitet werden, die Sie für diesen Zweck verwenden können:
| Ausnahme-Klasse | Beschreibung |
|---|---|
| AuthenticationException | Ein Fehler ist bei der Sicherheitsauthentifizierung für den externem auf Datenquellenservice aufgetreten, z. B. HTTP-Status 401 wird von externe Datenservice erhalten. Tritt in der Regel auf, weil der aktuelle Benutzer nicht die erforderlichen Rechte hat, oder die zugeordneten Informationen in EntityDataSource sind false. |
| EndpointException | Die Endpunktkonfiguration in der Datenquellentabelle ist ungültig, oder der Endpunkt ist nicht vorhanden. |
| GenericDataAccessException | Ein allgemeiner Datenzugriffsfehler ist aufgetreten, wird verwendet, wenn der Fehler nicht einer bestimmteren Ausnahme zugeordnet ist. |
| InvalidMetadataException | |
| InvalidQueryException | Die angegebene Abfrage ist ungültig; beispielsweise eine ungültige die Klauselkombination oder ein nicht unterstützter Vergleichsoperator. |
| ObjectNotFoundException | Der angegebene Datensatz in der externen Datenquelle ist nicht vorhanden. |
| TimeoutException | Der externe Vorgang wurde nicht innerhalb der zulässigen Zeit abgeschlossen; Beispielsweise das Ergebnis eines HTTP-Status 408 aus dem externen Datendienst. |
Plug-In-Registrierung
Im Gegensatz zu einem normalen Plug-In verwenden Sie nur das Plug-In-Registrierungstool (PRT), um die Assembly und die Plug-Ins für jedes Ereignis zu registrieren. Sie registrieren nicht bestimmte Schritte. Ihr Plug-In wird in Phase 30 ausgeführt, der Haupttransaktionsstufe für den Vorgang, der für gewöhnliche Plug-In-Schritte nicht verfügbar ist. Anstatt Schritte zu registrieren, konfigurieren Sie Ihren Datenanbieter mithilfe der folgenden Tabellen.
| Tabelle | Beschreibung |
|---|---|
| EntityDataProvider | Definiert die Plug-Ins, die für jedes Ereignis und den logischen Namen der Datenquelle verwendet werden sollen. |
Wenn die Definitionen für Ihre virtuelle Tabelle konfiguriert sind, werden Ihre Plug-Ins mithilfe des PRT registriert, und die richtigen Konfigurationsdaten werden in der Tabelle "EntityDataProvider " festgelegt, beginnt die virtuelle Tabelle mit der Antwort auf Anforderungen.
Weitere Informationen: Erstellen von Datenanbietern und Hinzufügen von Plug-Ins zum Anbieter
Debuggen von Plug-Ins
Ein benutzerdefinierter Anbieter für virtuelle Tabellen ist ein Plug-In-Typ. Verwenden Sie die Informationen in diesen Themen zum Debuggen von Plug-Ins für benutzerdefinierte virtuelle Tabellenanbieter: Debuggen von Plug-Ins und Lernprogramm: Debuggen eines Plug-Ins.
Siehe auch
Erste Schritte mit virtuellen Tabellen
API-Überlegungen zu virtuellen Tabellen
Beispiel: Generisches Plug-In für virtuelle Tabellendatenanbieter