Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
- Schemat zewnętrznego źródła danych i skojarzone techniki dostępu do danych. Ta wiedza na temat domeny jest specyficzna dla typu zewnętrznego źródła danych.
- Schemat definicji usługi Dataverse: Więcej informacji: Praca z definicjami tabel i kolumn przy użyciu kodu.
- Dataverse event framework: Więcej informacji: Event Framework.
- Architektura i programowanie wtyczek usługi Dataverse: Więcej informacji: Używanie wtyczek do rozszerzania procesów biznesowych.
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:
- Rozwiń niestandardową wtyczkę DLL dostawcy danych (lub zestaw wtyczek DLL).
- Zarejestruj niestandardowego dostawcę danych w usłudze Dataverse przy użyciu narzędzia do rejestracji wtyczek (PRT).
- Utwórz rozwiązanie dostawcy danych.
- Dostosuj tabelę źródła danych, aby odzwierciedlała typ danych lub określone wystąpienie.
- 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:
- Przekonwertuj odpowiednie informacje w kontekście wykonywania na zapytanie, które będzie działać dla zewnętrznego źródła danych.
- Pobierz dane z systemu zewnętrznego.
- 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