Niestandardowi dostawcy danych tabel wirtualnych

Korzystając z zestawu MICROSOFT DATAVERSE Data SDK, deweloperzy .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 encja wirtualna, deweloperzy mogą tworzyć i rejestrować wtyczki obsługujące każdą z operacji Tworzenie, Aktualizacja, Pobieranie, Pobieranie wielu rekordów oraz Usuwanie. Ta sekcja zawiera podstawowe informacje o dostawcach danych i podejściach do opracowywania dostawców niestandardowych, w tym przykładowego kodu.

Uwaga / Notatka

Zamiast tworzyć niestandardowego dostawcę źródeł danych, rozważ dostosowanie źródła danych do istniejącego dostawcy danych. Jeśli na przykład utworzysz interfejs OData v4 do zewnętrznego źródła danych, możesz bezpośrednio uzyskać do niego dostęp przy użyciu dostarczonego standardowego dostawcy danych OData v4, który obsługuje operacje CRUD. Mechanizm dodawania tego interfejsu REST różni się w zależności od podstawowej technologii usługi danych. Zobacz na przykład usługi danych WCF 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

Można utworzyć dwie ogólne kategorie dostawców danych przy użyciu zestawów SDK danych tabeli wirtualnej: ogólnych lub docelowych. W poniższej tabeli opisano te podejścia i przyporządkowano je do modelu tworzenia dostawcy danych najlepiej odpowiadającego każdemu z nich.

Kategoria Model deweloperski Opis
Ogólny element Dostawca serwerów bare metal Ci dostawcy elastycznie tłumaczą wyrażenia zapytań FetchXML na skojarzone żądanie do zewnętrznego źródła danych, a następnie zwracają wynikowe rekordy. Możesz ponownie użyć takiego dostawcy 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, wystarczy ponownie zamapować objęte tabele wirtualne.
Docelowe Dostawca LINQ dla znanego schematu Taki dostawca dokonuje ścisłego tłumaczenia zapytań na odpowiadające im wywołania LINQ skierowane do znanej, istniejącej instancji źródła danych. Źródło danych musi być dostawcą LINQ zgodnie z opisem w artykule Włączanie źródła danych na potrzeby 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, należy zaktualizować i ponownie skompilować dostawcę danych.

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 tabel wirtualnych, które można zaimportować do aplikacji Usługi Dataverse, wykonaj 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.

Aby uzyskać więcej informacji, zobacz Przykład: niestandardowy dostawca tabel wirtualnych z operacjami CRUD.

Programowanie wtyczek

Ponieważ tabele wirtualne obsługują operacje CRUD, zapisz dostawcę danych jako wtyczkę zarejestrowaną w zdarzeniach Create, Update, Retrieve, RetrieveMultiple i Delete . Każde zdarzenie zawiera w kontekście wykonania informacje określające 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. Przekształć odpowiednie informacje w kontekście wykonania w zapytanie, które będzie działać z zewnętrznym źródłem 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 . Usługa Dataverse zwraca ten wynik 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 platforma ułatwia konwertowanie zwracanych danych na odpowiednie typy Entity lub EntityCollection, oczekiwane przez platformę Dataverse.

Wyjątki dostawcy danych

Jeśli kod nie może osiągnąć oczekiwanego wyniku, wyrzuć 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 w usłudze zewnętrznego źródła danych; na przykład otrzymano kod stanu HTTP 401 z usługi zewnętrznego źródła 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 jest mapowany na bardziej specyficzny wyjątek.
InvalidMetadataException
InvalidQueryException Określone zapytanie jest nieprawidłowe; na przykład zawiera nieprawidłową kombinację 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 dodatki plug-in dla każdego zdarzenia. Nie rejestruj określonych 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ższej tabeli.

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

Podczas konfigurowania definicji tabeli wirtualnej należy zarejestrować wtyczki przy użyciu prT i ustawić prawidłowe dane konfiguracji w tabeli EntityDataProvider . Tabela wirtualna zaczyna odpowiadać na żądania.

Aby uzyskać więcej informacji, zobacz Tworzenie dostawcy danych i dodawanie wtyczek do dostawcy.

Debugowanie wtyczek

Specjalny dostawca tabel wirtualnych jest typem wtyczki. Skorzystaj z informacji w tych artykułach, 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