Udostępnij przez


Zagadnienia dotyczące interfejsu API tabel wirtualnych

Istnieją dwie szerokie kategorie zmian w systemie definicji tabel, które są skojarzone z wprowadzeniem tabel wirtualnych (nazywanych również jednostkami wirtualnymi) w usłudze Microsoft Dataverse:

  • Dodawanie nowego zestawu, przestrzeni nazw, klas i innych typów do obsługi tworzenia niestandardowych dostawców danych tabel wirtualnych
  • Zmiany platformy podstawowej, w tym kilka dodatkowych właściwości do obsługi mapowania zewnętrznego źródła danych oraz modyfikacje zachowań istniejących właściwości tabeli i kolumn, które odzwierciedlają ograniczenia początkowej implementacji tej funkcji

Zestaw SDK danych usługi Dynamics 365

Zestaw Sdk danych usługi Dynamics 365 zawiera Microsoft.Xrm.Sdk.Data.dlltypy ułatwiające tworzenie niestandardowych dostawców danych tabel wirtualnych. Składa się z następujących przestrzeni nazw:

Namespace Description
Microsoft.Xrm.Sdk.Data Podstawowa przestrzeń nazw zawierająca kilka typowych typów, takich jak wyliczenie AllowedQueryOptions
Microsoft.Xrm.Sdk.Data.CodeGen Zawiera klasy i interfejsy, które obsługują dynamiczne odbicie, dopasowywanie typów i generowanie kodu. Głównie używane przez wewnętrzny aparat dostawcy.
Microsoft.Xrm.Sdk.Data.Converters Zestaw klas do konwertowania standardowych typów XRM na odpowiadające im typy podstawowe platformy.NET
Microsoft.Xrm.Sdk.Data.Exceptions Zestaw klas wyjątków reprezentujących błędy, które mogą wystąpić podczas rozpoznawania wartości środowiska uruchomieniowego. Wszystkie pochodzą z bazy danych Microsoft.Xrm.Sdk.SdkExceptionBase.
Microsoft.Xrm.Sdk.Data.Expressions Klasy ułatwiające implementowanie obsługiwanych przekształceń zapytań, takich jak FILTER, JOIN i ORDER.
Microsoft.Xrm.Sdk.Data.Mappings Klasy i interfejsy, które tworzą mapowanie z typów definicji tabeli wirtualnej do typów zewnętrznych.
Microsoft.Xrm.Sdk.Data.Visitors Klasy implementujące wzorzec odwiedzających do wykonywania określonych operacji na parametrze QueryExpression przekazywanym do dostawcy danych podczas żądań RetrieveMultiple. Zapewnia konkretną obsługę zarówno ogólnego przetwarzania zapytań, jak i przetwarzania opartego na LINQ. Te klasy pochodzą z bazy danych Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase.

Ten zestaw jest dystrybuowany jako pakiet NuGet: Microsoft.CrmSdk.Data

Zmiany platformy podstawowej

Wprowadzono następujące zmiany standardowych typów odwołań usługi Dataverse w celu obsługi tabel wirtualnych.

Nowe tabele

Usługa Dataverse uwidacznia dostawców i źródeł danych tabeli wirtualnej jako następujące tabele: EntityDataProvider i EntityDataSource.

Nowe właściwości definicji tabeli

Do klasy dodano EntityMetadata cztery nowe właściwości:

Majątek Description
DataProviderId Identyfikator GUID identyfikujący skojarzonego dostawcę danych tabeli wirtualnej
DataSourceId Identyfikator GUID identyfikujący skojarzone źródło danych tabeli wirtualnej
ExternalName Nazwa tego typu w zewnętrznym źródle danych
ExternalCollectionName Nazwa w liczbie mnogiej dla tego typu, używana w interfejsie użytkownika i do obsługi dostępu OData

Do klasy dodano AttributeMetadata dwie nowe właściwości:

Majątek Description
ExternalName Nazwa typu w zewnętrznym źródle danych
IsDataSourceSecret Wskazuje, czy pole zawiera informacje poufne

Właściwość ExternalName została również dodana do OptionMetadata klas i OptionSetMetadata . Te nazwy zewnętrzne pomagają w mapowaniu zewnętrznego źródła danych, określając nazwę skojarzonego typu w zewnętrznym źródle danych. Te właściwości są używane tylko dla tabel wirtualnych; dla wbudowanego lub standardowego typu encji niestandardowej te nazwy zewnętrzne muszą mieć wartość null.

tworzenie tabeli wirtualnej

Podejście programowe do tworzenia typu tabeli wirtualnej różni się nieco od standardowego tworzenia niestandardowego typu encji, w tym:

  • Jeśli skojarzony dostawca danych (i opcjonalnie źródło danych) jest znany w czasie tworzenia, zostaną one określone.
  • Jeśli dostawca danych dla tego typu nie jest znany, jest co najmniej DataProviderId ustawiony na wartość 7015A531-CC0D-4537-B5F2-C882A1EB65AD, a DataSourceId jest ustawione na wartość null. Zanim wystąpienia tego typu będą używane w czasie wykonywania, te właściwości muszą mieć przypisane odpowiednie wartości.

Dwie nowe tabele EntityDataProvider i opcjonalnie EntityDataSourcezostaną utworzone podczas rejestrowania wtyczki, a ich identyfikatory entitydataproviderid i entitydatasourceid, reprezentują te wymagane identyfikatory GUID. (W przeciwnym razie deweloperzy rzadko muszą uzyskiwać bezpośredni dostęp do tych typów niestandardowych). Należy pamiętać, że źródło danych zawiera właściwość entitydataproviderid , która musi być zgodna z odpowiednim typem elementu DataProvider lub zostanie zgłoszony wyjątek środowiska uruchomieniowego.

Ostrzeżenie

Standardowe tabele (inne niż wirtualne) muszą mieć przypisane wartości DataProviderId i DataSourceId jako wartości domyślne (null), w przeciwnym razie zostanie zgłoszony wyjątek w czasie wykonywania. Po utworzeniu nie można przekonwertować typu innego niż wirtualny na typ wirtualny lub odwrotnie.

Zmiany zachowania właściwości definicji tabeli

W poniższej tabeli przedstawiono sposób modyfikowania zachowania standardowych właściwości EntityMetadata w przypadku zastosowania do tabel wirtualnych. Niektóre właściwości nie są prawidłowe dla tabel wirtualnych, natomiast inne są ograniczone w zakresie lub wartości.

Właściwość metadanych Czy dotyczy? Notatki
ActivityTypeMask nieprawidłowe Zawsze 0
Attributes prawidłowy
AutoCreateAccessTeams nieprawidłowe Zawsze FALSE
AutoRouteToOwnerQueue nieprawidłowe Zawsze fałszywe, kolejki nie są obsługiwane.
CanBeInManyToMany prawidłowy
Może być głównym podmiotem w relacji prawidłowy
MożeByćPowiązanąJednostkąWRelacji prawidłowy
CanChangeHierarchicalRelationship nieprawidłowe Zawsze fałszywe, relacje hierarchiczne nie są obsługiwane.
CanChangeTrackingBeEnabled nieprawidłowe Zawsze fałszywe, wartości śledzenia zmian i inspekcji nie są obsługiwane.
MożnaTworzyćAtrybuty prawidłowy
CanCreateCharts nieprawidłowe Zawsze FALSE
CanCreateForms prawidłowy
CanCreateViews prawidłowy
CanEnableSyncToExternalSearchIndex nieprawidłowe Zawsze FALSE
MożeZmieniaćDodatkoweUstawienia prawidłowy
CanTriggerWorkflow nieprawidłowe Zawsze fałszywe, nie można wyzwalać przepływów pracy.
ChangeTrackingEnabled nieprawidłowe Zawsze FALSE
CollectionSchemaName prawidłowy
DaysSinceRecordLastModified nieprawidłowe Zawsze ma wartość null lub 0
Description prawidłowy
DisplayCollectionName prawidłowy
DisplayName prawidłowy
EnforceStateTransitions nieprawidłowe StateCode i Status nie są obsługiwane.
EntityColor prawidłowy
EntityHelpUrl prawidłowy
EntityHelpUrlEnabled prawidłowy
EntitySetName prawidłowy
ExtensionData nieprawidłowe Przestarzała właściwość
HasChanged prawidłowy
IconLargeName prawidłowy
IconMediumName prawidłowy
IconSmallName prawidłowy
IntroducedVersion prawidłowy
IsActivity nieprawidłowe Zawsze fałszywe, akcje nie są obsługiwane.
IsActivityParty nieprawidłowe Zawsze FALSE
IsAIRUpdated nieprawidłowe Deprecated
IsAuditEnabled nieprawidłowe Zawsze fałszywe, inspekcja nie jest obsługiwana.
IsAvailableOffline nieprawidłowe Zawsze fałszywe, użycie w trybie offline nie jest obsługiwane.
IsBusinessProcessEnabled nieprawidłowe Zawsze fałszywe, procesy biznesowe nie są obsługiwane.
IsChildEntity nieprawidłowe Zawsze nieprawda, wszystkie tabele wirtualne należą do organizacji.
IsConnectionsEnabled prawidłowy
IsCustomEntity prawidłowy
IsCustomizable prawidłowy
IsDocumentManagementEnabled prawidłowy
IsDocumentRecommendationsEnabled nieprawidłowe Zawsze fałszywe, ta nowa funkcja nie jest obsługiwana.
IsDuplicateDetectionEnabled nieprawidłowe Zawsze fałszywe, ale wykrywanie duplikatów można wykonać w źródle danych.
IsEnabledForCharts ograniczone Tylko w przypadku obsługiwanych klauzul pobierania.
IsEnabledForTrace prawidłowy
IsImportable prawidłowy
IsInteractionCentricEnabled prawidłowy
IsIntersect prawidłowy
IsKnowledgeManagementEnabled nieprawidłowe Zawsze fałszywe, integracja z zarządzaniem wiedzą nie jest obsługiwana.
IsMailMergeEnabled prawidłowy
IsManaged prawidłowy
IsMappable prawidłowy
IsOfflineInMobileClient nieprawidłowe Zawsze fałszywe, wartości tabel wirtualnych nie są buforowane do użytku w trybie offline.
IsOneNoteIntegrationEnabled prawidłowy
IsOptimisticConcurrencyEnabled nieprawidłowe Zawsze fałszywe, współbieżność musi być zaimplementowana w źródle danych.
IsPrivate prawidłowy
IsQuickCreateEnabled prawidłowy
IsReadOnlyInMobileClient prawidłowy
CzyMożnaZmienićNazwę prawidłowy
IsSLAEnabled nieprawidłowe Zawsze FALSE
IsStateModelAware nieprawidłowe
IsValidForAdvancedFind prawidłowy
IsValidForQueue prawidłowy
IsVisibleInMobile prawidłowy
IsVisibleInMobileClient prawidłowy
Keys nieprawidłowe Klucze alternatywne nie są obsługiwane
LogicalCollectionName prawidłowy
LogicalName prawidłowy
ManyToManyRelationships prawidłowy
ManyToOneRelationships prawidłowy Nieobsługiwane między dwiema tabelami wirtualnymi.
MetadataId prawidłowy
MobileOfflineFilters nieprawidłowe Zawsze fałszywe, użycie w trybie offline nie jest obsługiwane.
ObjectTypeCode prawidłowy
OneToManyRelationships prawidłowy
OwnershipType nieprawidłowe Zawsze OrganizationOwned
PrimaryIdAttribute prawidłowy
PrimaryImageAttribute prawidłowy
PrimaryNameAttribute prawidłowy
Privileges nieprawidłowe
RecurrenceBaseEntityLogicalName nieprawidłowe
ReportViewName nieprawidłowe
SchemaName prawidłowy
SyncToExternalSearchIndex nieprawidłowe

Zmiany zachowania właściwości definicji kolumny

W poniższej tabeli wyjaśniono, jak zachowanie standardowych właściwości AttributeMetadata jest modyfikowane podczas stosowania do tabel wirtualnych. Niektóre właściwości nie są prawidłowe dla tabel wirtualnych, natomiast inne są ograniczone w zakresie lub wartości.

Właściwość metadanych Czy dotyczy? Notatki
ColumnNumber nieprawidłowe
DeprecatedVersion prawidłowy
Description prawidłowy
DisplayName prawidłowy
EntityLogicalName prawidłowy
ExtensionData nieprawidłowe
HasChanged prawidłowy
InheritsFrom prawidłowy
IntroducedVersion prawidłowy
IsAuditEnabled nieprawidłowe Zawsze fałszywe, inspekcja nie jest obsługiwana.
IsCustomAttribute prawidłowy
IsCustomizable prawidłowy
IsFilterable prawidłowy
IsGlobalFilterEnabled prawidłowy
IsLogical prawidłowy
IsManaged prawidłowy
IsPrimaryId prawidłowy
IsPrimaryName prawidłowy
CzyMożnaZmienićNazwę prawidłowy
IsSearchable prawidłowy
IsSecured nieprawidłowe Zawsze wartość false, zabezpieczenia na poziomie pola nie są obsługiwane.
IsSortableEnabled prawidłowy
IsValidForAdvancedFind prawidłowy
IsValidForCreate prawidłowy
IsValidForRead prawidłowy
IsValidForUpdate prawidłowy
LinkedAttributeId prawidłowy
LogicalName prawidłowy
MetadataId prawidłowy
RequiredLevel prawidłowy
SchemaName prawidłowy
SourceType nieprawidłowe Zawsze 0, obliczane lub zbiorcze wartości nie są obsługiwane.

Zobacz także

Rozpocznij pracę z jednostkami wirtualnymi
Niestandardowi dostawcy danych tabel wirtualnych
Przykład: wtyczka ogólnego dostawcy danych dla wirtualnej tabeli