Anbieter von benutzerdefinierter virtueller Tabellendaten

Durch Verwenden von Microsoft Dataverse Data SDK haben .NET-Entwickler die Möglichkeit zum Erstellen benutzerdefinierter virtueller Tabellendatenanbieter, um externe Datenquellentypen zu kennen, die nicht von einem vorhandenen Datenanbieter unterstützt werden. Jeder Datenanbieter besteht aus einem wiederverwendbaren Satz von Dataverse-Plugins, die die unterstützten CRUD-Vorgänge implementieren. Für jede virtuelle Tabellen, auch als virtuelle Entität bekannt, können Entwickler Plug-Ins erstellen und sie registrieren, die jede der Operationen Erstellen, Aktualisieren, Abrufen, Mehrfach abrufen und Löschen repräsentieren. Dieser Abschnitt enthält grundlegende Informationen über Datenanbieter und Ansätze zur Entwicklung angepasster Anbieter, einschließlich Beispielcode.

Hinweis

Alternativ zum Erstellen eines benutzerdefinierten Datenquellenanbieters, sollten Sie erwägen, die Datenquelle an einen vorhandenen Datenanbieter anzupassen. Wenn Sie z. B. eine OData v4-Schnittstelle zu Ihrer externen Datenquelle erstellen, dann können Sie mit dem mitgelieferten Standard-OData v4-Datenprovider, der auch CRUD-Operationen unterstützt, direkt darauf zugreifen. 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:

Die Microsoft.Xrm.Sdk.Data.dll-Assembly wird als NuGet-Paket bereitgestellt: Microsoft.CrmSdk.Data

Kategorien von Anbietern

Es gibt zwei allgemeine Kategorien von Datenanbietern, die Sie mit den virtuellen Tabellendaten SDK-Assemblys 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 können FetchXML-Abfrageausdrücke Anbieter der zugeordneten Anforderung für externe Datenquelle flexibel übersetzen, und geben die resultierenden Datensätze zurückgegeben. Solch ein Anbieter kann für alle Instanzen des Datenquellentyps wiederverwendet werden. Diese Methode ist am allgemeinsten, jedoch kompliziert zu entwickeln. Wenn das Schema der Datenquelle geändert wird, 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 verschiedene Schritte, die erforderlich sind, um eine virtuelle Tabellendatenanbieterlösung zu erstellen, die in die Dataverse-Anwendungen importiert werden können:

  1. Entwickeln des benutzerdefinierten Datenanbieter-Pug-Ins in DLL (oder ein Satz von DLLs).
  2. Registrieren des benutzerdefinierten Datenanbieters in Ihrem Dataverse-Service unter Verwendung des Plug-In-Registrierungstools (PRT).
  3. Erstellen einer Datenanbieterlösung.
  4. Anpassen der Datenquellentabellen, um einen Typ oder besondere Instanz widerzuspiegeln.
  5. Exportieren Sie die benutzerdefinierte Datenanbieterlösung.

Weitere Informationen: Beispiel: Angepasster virtueller Tabellenanbieter mit CRUD Vorgängen

Plug-In-Entwicklung

Da virtuelle Tabelle CRUD-Operationen unterstützen, werden Sie den Data Provider in Form eines Plug-ins erstellen, das auf den Ereignissen Erstellen, Aktalisieren, Abrufen, Mehrfach abrufen und Löschen registriert ist. Jedes jeweilige Ereignis enthält Informationen im Ausführungskontext, die die Art von Daten beschreiben, die zurückzugeben sind.

Veranstaltung Ausführungskontext
Abrufen Beschreibt, welche Tabelle abzurufen ist sowie die Spalte une alle verknüpften Tabellen, die einzuschließen sind.
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:

  1. Konvertieren Sie die entsprechenden Informationen im Ausführungskontext in eine Abfrage, die für Ihre externe Datenquelle funktioniert.
  2. Abrufen von Daten aus dem externen System.
  3. Für Abrufen konvertieren Sie Daten in eine Entity; andernfalls, für RetrieveMultiple, konvertieren Sie sie in eine EntityCollection. Das Ergebnis wird mithilfe der Dataverse-Plattform dem Benutzer zurückgegeben, der die Abfrage ausführt.

Die Klassen im Microsoft.Xrm.Sdk.Data-Namespace bieten ein Framework, das Ihnen hilft, die Dataverse-Abfrageinformationen aus dem Ausführungskontext in eine Abfrage im für Ihre externe Datenquelle geeigneten Format abzubilden. Dieses Framework hilft Ihnen, die Daten zu konvertieren, die an die entsprechenden Entity- oder EntityCollection-Typen zurückgegeben werden, der von der Dataverse-Plattform erwartet werden.

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 dem SdkExceptionBase abgeleitet sind, das 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 in der angegeben Zeit abgeschlossen; z. B. das Ergebnis eines HTTP-Status 408 des externen Datenservices.

Plug-In-Registrierung

Im Gegensatz zu gewöhnliches ein Plug-In verwenden Sie die Plugin Registrieruns-Tools (PRT), um die Assembly und Plug-Ins die für jedes Ereignis zu registrieren. Sie registrieren nicht bestimmte Schritte. Ihr Plug-In wird ausgeführt in der Phase 30, der Hauptkerntransaktionsphase für den Vorgang, die nicht für gewöhnliche Plugin-Schritte verfügbar ist. Anstatt Schritte zu registrieren, konfigurieren Sie Ihren Datenanbieter mit den folgenden Tabellen.

Tabelle Beschreibung
EntityDataProvider Definiert die Plug-Ins, die für jedes Ereignis verwendet werden und den logischen Namen der Datenquelle.

Wenn die Definitionen für Ihre virtuelle Tabelle konfiguriert sind, Ihre Plugins mit dem PRT registriert sind und die korrekten Konfigurationsdaten in der EntityDataProvider-Tabelle festgelegt sind, wird Ihre virtuelle Tabelle beginnen, auf Anfragen zu antworten.

Weitere Informationen: Datenprovider erstellen und Plug-ins zum Provider hinzufügen

Debuggen von Plug-Ins

Ein benutzerdefinierter Anbieter für virtuelle Tabellen ist eine Art Plug-In. Verwenden Sie die Informationen in diesen Themen, um Plug-Ins für benutzerdefinierte Anbieter virtueller Tabellen zu debuggen: Debuggen von Plug-Ins und Tutorial: Debuggen Sie ein Plug-In.

Siehe auch

Los geht's mit virtuellen Tabellen
API-Überlegungen von virtuelle Tabellen
Beispiel: Generisches virtuelles Tabellendatenanbieter-Plug-In

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).