Důležité informace o rozhraní API pro virtuální tabulky

K zavedení virtuálních tabulek (označovaných také jako virtuální entity) v Microsoft Dataverse jsou přidruženy dvě široké kategorie změn systému definic tabulek:

  • Přidání nového sestavení, oborů názvů, tříd a dalších typů pro podporu vývoje vlastních zprostředkovatelů dat virtuálních tabulek
  • Změny základní platformy, včetně několika dalších vlastností pro podporu mapování externího zdroje dat a změny chování existujících vlastností tabulky a sloupců, které odrážejí omezení počáteční implementace této funkce

Sestavení sady Dynamics 365 Data SDK

Sestavení Dynamics 365 Data SDK obsahuje typy, Microsoft.Xrm.Sdk.Data.dllkteré vám pomůžou při vytváření vlastních zprostředkovatelů dat virtuálních tabulek. Skládá se z následujících jmenných prostor:

Obor názvů Description
Microsoft.Xrm.Sdk.Data Základní obor názvů, který obsahuje několik běžných typů, jako je výčet AllowedQueryOptions
Microsoft.Xrm.Sdk.Data.CodeGen Obsahuje třídy a rozhraní, která podporují dynamické reflexe, porovnávání typů a generování kódu. Používá se hlavně interní modul poskytovatele.
Microsoft.Xrm.Sdk.Data.Converters Sada tříd pro převod standardních typů XRM na odpovídající základní typy .NET
Microsoft.Xrm.Sdk.Data.Exceptions Sada tříd výjimek, které představují chyby, ke kterým může dojít během řešení hodnoty modulu runtime. Všechny jsou odvozeny od Microsoft.Xrm.Sdk.SdkExceptionBase.
Microsoft.Xrm.Sdk.Data.Expressions Třídy, které vám pomůžou s implementací podporovaných transformací dotazů, jako je FILTER, JOIN a ORDER.
Microsoft.Xrm.Sdk.Data.Mappings Třídy a rozhraní, která vytvářejí mapování z typů definic virtuální tabulky na externí typy.
Microsoft.Xrm.Sdk.Data.Visitors Třídy, které implementují vzor návštěvníka k provádění konkrétních operací s parametrem QueryExpression předaným poskytovateli dat během požadavků RetrieveMultiple. Poskytuje specifickou podporu pro obecné dotazy i zpracování založené na LINQ. Tyto třídy jsou odvozeny z Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase.

Tyto obory názvů jsou součástí sestavení zahrnutého v tomto balíčku NuGet: Microsoft.CrmSdk.Data.

Změny základní platformy

Následující změny standardních referenčních typů Dataverse podporují virtuální tabulky.

Nové tabulky

Dataverse zveřejňuje zprostředkovatele a zdroje dat virtuální tabulky jako následující tabulky: EntityDataProvider a EntityDataSource.

Nové vlastnosti definice tabulky

Do EntityMetadata třídy byly přidány čtyři nové vlastnosti:

Vlastnost Description
DataProviderId GUID, který identifikuje přidruženého poskytovatele dat virtuální tabulky
DataSourceId GUID, který identifikuje zdroj dat přidružené virtuální tabulky
ExternalName Název tohoto typu v externím zdroji dat
ExternalCollectionName Název množného čísla pro tento typ, používaný v uživatelském rozhraní a pro podporu přístupu k OData

Do AttributeMetadata třídy byly přidány dvě nové vlastnosti:

Vlastnost Description
ExternalName Název typu v externím zdroji dat
IsDataSourceSecret Určuje, jestli pole obsahuje citlivé informace.

Vlastnost ExternalName byla přidána také do tříd OptionMetadata a OptionSetMetadata tříd. Tyto externí názvy pomáhají mapování externího zdroje dat zadáním názvu přidruženého typu v externím zdroji dat. Tyto vlastnosti se používají pouze pro virtuální tabulky. Pro předdefinované nebo standardní vlastní typy entit musí být tyto externí názvy null.

Vytvoření virtuální tabulky

Přístup k programovému vytvoření typu virtuální tabulky se mírně liší od vytvoření standardního vlastního typu entity v tom, že:

  • Pokud znáte přidruženého zprostředkovatele dat (a volitelně i zdroj dat) při vytváření, zadejte tyto hodnoty.
  • Pokud neznáte zprostředkovatele dat pro tento typ, nastavte DataProviderId na 7015A531-CC0D-4537-B5F2-C882A1EB65AD hodnotu a nastavte DataSourceId hodnotu null. Před použitím instancí tohoto typu za běhu přiřaďte tyto vlastnosti příslušné hodnoty.

Při registraci modulu plug-in vytvoříte dvě nové tabulky , EntityDataProvider a volitelně EntityDataSource. Jejich příslušná ID entitydataproviderid a entitydatasourceidpředstavují tyto požadované identifikátory GUID. (Jinak vývojáři potřebují přístup k těmto vlastním typům jen zřídka.) Vlastnost entitydataproviderid, kterou obsahuje zdroj dat, se musí shodovat s odpovídajícím typem DataProvider, jinak je vyvolána výjimka modulu runtime.

Výstraha

Standardní (nevirtuální) tabulky musí mít hodnoty jejich přidružené DataProviderId a DataSourceId nastavené na výchozí hodnoty (null), jinak se vyvolá výjimka za běhu. Po vytvoření nemůžete převést z nevirtuálního typu na virtuální typ nebo obráceně.

Změny chování vlastností definice tabulky

Následující tabulka podrobně popisuje, jak se mění chování standardních vlastností EntityMetadata , když je použijete u virtuálních tabulek. Některé vlastnosti nejsou platné pro virtuální tabulky, zatímco jiné jsou omezené v oboru nebo hodnotě.

Vlastnost metadat Aplikuje? Poznámky
ActivityTypeMask neplatný Vždy 0
Atributy platný
AutoCreateAccessTeams neplatný Vždy false
AutoRouteToOwnerQueue neplatný Vždy nepravda, fronty se nepodporují.
CanBeInManyToMany platný
Může být primární entitou ve vztahu platný
MůžeBýtPříbuznýEntitaVeVztahu platný
CanChangeHierarchicalRelationship neplatný Vždy nepravda, hierarchické vztahy nejsou podporovány.
CanChangeTrackingBeEnabled neplatný Hodnoty vždy nepravdivé, sledování změn a auditování nejsou podporovány.
MůžeVytvářetAtributy platný
MůžeVytvářetGrafy neplatný Vždy false
CanCreateForms platný
CanCreateViews platný
CanEnableSyncToExternalSearchIndex neplatný Vždy false
LzeMěnitDalšíNastavení platný
CanTriggerWorkflow neplatný Vždy nepravda, pracovní postupy se nedají aktivovat.
ChangeTrackingEnabled neplatný Vždy false
CollectionSchemaName platný
DaysSinceRecordLastModified neplatný Vždy null nebo 0
Description platný
DisplayCollectionName platný
ZobrazovanéJméno platný
EnforceStateTransitions neplatný StateCode a Status nejsou podporované.
EntityColor platný
EntityHelpUrl platný
EntityHelpUrlEnabled platný
EntitySetName platný
ExtensionData neplatný Zastaralá vlastnost
HasChanged platný
IconLargeName platný
IconMediumName platný
IconSmallName platný
IntroducedVersion platný
IsActivity neplatný Vždy nepravda, aktivity se nepodporují.
IsActivityParty neplatný Vždy false
IsAIRUpdated neplatný Zastaralé
IsAuditEnabled neplatný Vždy je nepravdivé, auditování není podporováno.
IsAvailableOffline neplatný Vždy nepravda, offline použití není podporováno.
IsBusinessProcessEnabled neplatný Vždy je to nepravdivé, obchodní procesy nejsou podporovány.
IsChildEntity neplatný Vždy je nepravdivé, všechny virtuální tabulky jsou vlastněné organizací.
IsConnectionsEnabled platný
IsCustomEntity platný
Je přizpůsobitelný platný
IsDocumentManagementEnabled platný
IsDocumentRecommendationsEnabled neplatný Vždy nepravda, tato nová funkce se nepodporuje.
IsDuplicateDetectionEnabled neplatný Vždy false, ale duplicitní detekce se dá provést ve zdroji dat.
IsEnabledForCharts omezená Pouze pro podporované klauzule Fetch.
IsEnabledForTrace platný
IsImportable platný
IsInteractionCentricEnabled platný
IsIntersect platný
IsKnowledgeManagementEnabled neplatný Integrace správy znalostí není nikdy podporována.
IsMailMergeEnabled platný
IsManaged platný
IsMappable platný
IsOfflineInMobileClient neplatný Hodnoty virtuální tabulky jsou vždy nepravdivé a nejsou uložené v mezipaměti pro použití offline.
IsOneNoteIntegrationEnabled platný
IsOptimisticConcurrencyEnabled neplatný Vždy false, souběžnost musí být implementována ve zdroji dat.
IsPrivate platný
IsQuickCreateEnabled platný
IsReadOnlyInMobileClient platný
IsRenameable platný
IsSLAEnabled neplatný Vždy false
IsStateModelAware neplatný
IsValidForAdvancedFind platný
IsValidForQueue platný
IsVisibleInMobile platný
IsVisibleInMobileClient platný
Klíče neplatný Alternativní klíče se nepodporují.
LogicalCollectionName platný
Logický název platný
ManyToManyRelationships platný
ManyToOneRelationships platný Není podporováno mezi dvěma virtuálními tabulkami.
MetadataId platný
MobileOfflineFilters neplatný Vždy nepravda, offline použití není podporováno.
ObjectTypeCode platný
OneToManyRelationships platný
OwnershipType neplatný Vždy OrganizationOwned
PrimaryIdAttribute platný
PrimaryImageAttribute platný
PrimaryNameAttribute platný
Oprávnění neplatný
RecurrenceBaseEntityLogicalName neplatný
ReportViewName neplatný
SchemaName platný
SyncToExternalSearchIndex neplatný

Změny chování vlastnosti definice sloupce

Následující tabulka vysvětluje, jak se chování standardních vlastností AttributeMetadata mění, když je použijete na virtuální tabulky. Některé vlastnosti nejsou platné pro virtuální tabulky, zatímco jiné mají omezený rozsah nebo hodnotu.

Vlastnost metadat Aplikuje? Poznámky
ColumnNumber neplatný
DeprecatedVersion platný
Description platný
ZobrazovanéJméno platný
Logický název entity platný
ExtensionData neplatný
HasChanged platný
InheritsFrom platný
IntroducedVersion platný
IsAuditEnabled neplatný Vždy je nepravdivé, auditování není podporováno.
IsCustomAttribute platný
Je přizpůsobitelný platný
IsFilterable platný
IsGlobalFilterEnabled platný
IsLogical platný
IsManaged platný
IsPrimaryId platný
IsPrimaryName platný
IsRenameable platný
JeVyhledatelné platný
IsSecured neplatný Vždy je nastaveno na false, zabezpečení na úrovni pole není podporováno.
IsSortableEnabled platný
IsValidForAdvancedFind platný
IsValidForCreate platný
IsValidForRead platný
IsValidForUpdate platný
LinkedAttributeId platný
Logický název platný
MetadataId platný
Požadovaná úroveň platný
SchemaName platný
Typ zdroje neplatný Vždy 0, počítané nebo souhrnné hodnoty se nepodporují.

Viz také

Začínáme s virtuálními entitami
Vlastní poskytovatelé dat pro virtuální tabulky
Ukázka: Plug-in obecného zprostředkovatele dat virtuální tabulky