Udostępnij przez


Niestandardowi dostawcy danych tabel wirtualnych

Korzystając z zestawu Microsoft Dataverse Data SDK, deweloperzy platformy .NET mogą tworzyć niestandardowych dostawców danych tabel wirtualnych, aby ułatwić integrację zewnętrznych typów źródeł danych, które nie są obsługiwane przez istniejącego dostawcę danych. Każdy dostawca danych składa się z zestawu dodatków plug-in Dataverse wielokrotnego użytku, które implementują obsługiwane operacje CRUD. Dla każdej tabeli wirtualnej, znanej również jako jednostka wirtualna, deweloperzy mogą tworzyć wtyczki i rejestrować je reprezentujące każdą operację Create, Update, Retrieve, RetrieveMultiple i Delete . Ta sekcja zawiera podstawowe informacje o dostawcach danych i podejściach do opracowywania dostawców niestandardowych, w tym przykładowego kodu.

Uwaga / Notatka

Alternatywą dla tworzenia niestandardowego dostawcy źródła danych powinno być dostosowanie źródła danych do istniejącego dostawcy danych. Jeśli na przykład utworzysz interfejs OData w wersji 4 dla zewnętrznego źródła danych, możesz uzyskać bezpośredni dostęp do niego za pomocą dostarczonego standardowego dostawcy danych OData v4, który obsługuje również operacje CRUD. Mechanizm dodawania tego interfejsu REST różni się w zależności od podstawowej technologii usługi danych, na przykład zobacz WCF Data Services 4.5. Technologia OData ma obszerne wsparcie ze strony branży, z szeroką gamą dedykowanych narzędzi i technologii kompatybilnych.

Wymagania wstępne

Niestandardowi dostawcy danych wymagają znacznych zasobów programistycznych do tworzenia i konserwacji. Musisz mieć podstawową wiedzę na temat następujących obszarów:

Zestaw Microsoft.Xrm.Sdk.Data.dll jest dostępny jako pakiet NuGet: Microsoft.CrmSdk.Data

Kategorie dostawców

Istnieją dwie ogólne kategorie dostawcy danych, które można utworzyć przy użyciu zestawów SDK danych tabeli wirtualnej: ogólnych lub docelowych. W poniższej tabeli opisano te podejścia i dopasowano je do modelu rozwoju dostawcy danych najlepiej pasującego do danego podejścia.

Kategoria Model deweloperski Opis
Ogólny element Dostawca serwerów bare metal Ci dostawcy mogą elastycznie tłumaczyć wyrażenia zapytań FetchXML na skojarzone żądanie do zewnętrznego źródła danych, a następnie zwracać wynikowe rekordy. Tego typu dostawcę można użyć ponownie dla wszystkich wystąpień tego typu źródła danych. Takie podejście jest najbardziej ogólne, ale bardziej skomplikowane do opracowania. Jeśli schemat źródła danych ulegnie zmianie, tabele wirtualne, których dotyczy problem, muszą być mapowane tylko ponownie.
Docelowe Dostawca LINQ dla znanego schematu Taki usługodawca ogranicza tłumaczenie zapytań tylko do wywołań LINQ powiązanych znanym, istniejącym wystąpieniem źródła danych. Źródło danych musi być dostawcą LINQ zgodnie z opisem w temacie Włączanie źródła danych dla zapytań LINQ. Takie podejście jest ograniczone do określonego wystąpienia źródła danych, ale wymaga znacznie mniej kodowania. Jeśli schemat źródła danych ulegnie zmianie, dostawca danych musi zostać zaktualizowany i przebudowany.

Standardowy dostawca danych OData w wersji 4 i dostawca danych usługi Azure Cosmos DB to przykłady dostawców ogólnych.

Procedura używania niestandardowego dostawcy danych

Aby utworzyć rozwiązanie dostawcy danych dla wirtualnych tabel, które można zaimportować do aplikacji Dataverse, wymagane są następujące kroki:

  1. Rozwiń niestandardową wtyczkę DLL dostawcy danych (lub zestaw wtyczek DLL).
  2. Zarejestruj niestandardowego dostawcę danych w usłudze Dataverse przy użyciu narzędzia do rejestracji wtyczek (PRT).
  3. Utwórz rozwiązanie dostawcy danych.
  4. Dostosuj tabelę źródła danych, aby odzwierciedlała typ danych lub określone wystąpienie.
  5. Wyeksportuj rozwiązanie niestandardowego dostawcy danych.

Więcej informacji : Przykład: Niestandardowy dostawca tabel wirtualnych z operacjami CRUD

Programowanie wtyczek

Ponieważ tabele wirtualne obsługują operacje CRUD, należy napisać dostawcę danych w postaci wtyczki zarejestrowanej w zdarzeniach Create, Update, Retrieve, RetrieveMultiple i Delete . Każde odpowiednie zdarzenie zawierać będzie informacje w kontekście wykonania, które opisują rodzaj danych do zwrócenia.

Event Kontekst wykonywania
Odzyskać Opisuje tabelę do pobrania, a także kolumny i wszystkie powiązane tabele do uwzględnienia.
RetrieveMultiple QueryExpression Zawiera obiekt definiujący zapytanie. Struktura zawiera klasę QueryExpressionVisitor zaprojektowaną do inspekcji różnych części drzewa wyrażeń zapytania.

W przypadku obu zdarzeń należy wykonać następujące czynności:

  1. Przekonwertuj odpowiednie informacje w kontekście wykonywania na zapytanie, które będzie działać dla zewnętrznego źródła danych.
  2. Pobierz dane z systemu zewnętrznego.
  3. W polu Pobieranie przekonwertuj dane na element Entity; w przeciwnym razie w polu RetrieveMultiple przekonwertuj je na EntityCollectionelement . Ten wynik jest zwracany za pośrednictwem platformy Dataverse do użytkownika wykonującego zapytanie.

Klasy w przestrzeni nazw Microsoft.Xrm.Sdk.Data zapewniają strukturę wspomagającą mapowanie informacji o zapytaniu Dataverse z kontekstu wykonawczego na zapytanie w formacie odpowiednim dla zewnętrznego źródła danych. Ta struktura pomoże ci przekonwertować dane zwracane na typy Entity lub EntityCollection oczekiwane przez platformę Dataverse.

Wyjątki dostawcy danych

Jeśli z jakiegokolwiek powodu Twój kod nie może osiągnąć oczekiwanego wyniku, musisz zgłosić odpowiedni błąd. Microsoft.Xrm.Sdk.Data.Exceptions Przestrzeń nazw zawiera następujące klasy wyjątków pochodzące z klasy SdkExceptionBase, które można wykorzystać do tego celu.

Klasa wyjątków Opis
AuthenticationException Wystąpił błąd podczas uwierzytelniania bezpieczeństwa w zewnętrznej usłudze źródła danych; na przykład błąd HTTP 401 odebrany z zewnętrznej usługi danych. Zazwyczaj występuje, ponieważ bieżący użytkownik nie ma odpowiednich uprawnień lub informacje o połączeniu w skojarzonej jednostce EntityDataSource są niepoprawne.
EndpointException Konfiguracja punktu końcowego w tabeli źródła danych jest nieprawidłowa lub punkt końcowy nie istnieje.
GenericDataAccessException Ogólny błąd dostępu do danych, używany, gdy błąd nie odpowiada bardziej szczegółowemu wyjątkowi.
InvalidMetadataException
InvalidQueryException Określone zapytanie jest nieprawidłowe; na przykład jest to nieprawidłowa kombinacja klauzuli lub nieobsługiwany operator porównania.
ObjectNotFoundException Określony rekord w zewnętrznym źródle danych nie istnieje.
TimeoutException Operacja zewnętrzna nie została ukończona w dozwolonym czasie; na przykład wynik stanu HTTP 408 z zewnętrznej usługi danych.

Rejestracja wtyczki

W przeciwieństwie do zwykłego dodatku plug-in użyjesz tylko narzędzia do rejestracji dodatków plug-in (PRT), aby zarejestrować zestaw i dodatków plug-in dla każdego zdarzenia. Nie zarejestrujesz konkretnych kroków. Twój dodatek plug-in zostanie uruchomiona w etapie 30, głównym podstawowym etapie transakcji dla operacji, który nie jest dostępny dla zwykłych kroków dodatku plug-in. Zamiast rejestrować kroki, skonfiguruj dostawcę danych przy użyciu poniższych tabel.

tabela Opis
EntityDataProvider Definiuje wtyczki do użycia dla każdego zdarzenia i nazwę logiczną źródła danych.

Po skonfigurowaniu definicji Twojej tabeli wirtualnej, wtyczki są rejestrowane przy użyciu PRT, a właściwe dane konfiguracji są ustawione w tabeli EntityDataProvider. Twoja tabela wirtualna zacznie odpowiadać na żądania.

Więcej informacji: Tworzenie dostawcy danych i dodawanie wtyczek do dostawcy

Debugowanie wtyczek

Specjalny dostawca tabel wirtualnych jest typem wtyczki. Skorzystaj z informacji w tych tematach, aby debugować wtyczki dla niestandardowych dostawców tabel wirtualnych: Debugowanie wtyczek i Samouczek: debugowanie wtyczki.

Zobacz także

Rozpoczynanie pracy z tabelami wirtualnymi
Zagadnienia dotyczące interfejsu API tabel wirtualnych
Przykład: wtyczka ogólnego dostawcy danych dla wirtualnej tabeli