Freigeben über


API-Überlegungen zu virtuellen Tabellen

Es gibt zwei allgemeine Kategorien von Änderungen am Tabellendefinitionssystem, die mit der Einführung virtueller Tabellen (auch als virtuelle Entitäten bezeichnet) in Microsoft Dataverse verknüpft sind:

  • Hinzufügen einer neuen Assembly, Namespaces, Klassen und anderer Typen zur Unterstützung der Entwicklung von benutzerdefinierten virtuellen Tabellendatenanbietern
  • Änderungen an der Kernplattform, einschließlich einiger zusätzlicher Eigenschaften zur Unterstützung der Zuordnung externer Datenquellen sowie Änderungen von Verhaltensweisen vorhandener Tabellen- und Spalteneigenschaften, die die Einschränkungen der anfänglichen Implementierung dieses Features widerspiegeln

Dynamics 365 Data SDK-Assembly

Die Dynamics 365 Data SDK-Assembly, Microsoft.Xrm.Sdk.Data.dll, enthält Typen, die bei der Erstellung von virtuellen Datenanbietern für benutzerdefinierte Tabellen unterstützen. Es ist in den folgenden Namespaces enthalten:

Namespace Description
Microsoft.Xrm.Sdk.Data Basis-Namespace, der einige allgemeine Typen enthält wie z.B. AllowedQueryOptions-Enumeration.
Microsoft.Xrm.Sdk.Data.CodeGen Enthält Klassen und Schnittstellen, die die dynamische Reflektion, den Typenabgleich und die Codegenerierung unterstützen. Hauptsächlich wird von der internen Anbieterengine genutzt.
Microsoft.Xrm.Sdk.Data.Converters Einer Satz der Klassen, um Standard-XRM-Typen in ihre entsprechenden .NETs-Basistypen zu konvertieren.
Microsoft.Xrm.Sdk.Data.Exceptions Einer Satz der Ausnahmeklassen, die Fehler darstellen, die während der Ablaufwertlösung auftreten können. Alle resultieren aus Microsoft.Xrm.Sdk.SdkExceptionBase.
Microsoft.Xrm.Sdk.Data.Expressions Klassen, um bei der Implementierung der unterstützten Abfragetransformationen wie FILTER, JOIN und ORDER zu helfen.
Microsoft.Xrm.Sdk.Data.Mappings Klassen und Schnittstellen, die die Zuordnung von virtuellen Tabellendefinitionstypen zu externen Typen erstellen.
Microsoft.Xrm.Sdk.Data.Visitors Klassen, die die Besuchermuster implementieren, um bestimmte Operationen für den QueryExpression-Parameter, übergaben an den Datenanbieter über RetrieveMultiple-Anfragen, auszuführen. Gewährt bestimmte Unterstützung für Verarbeitung allgemeiner und LINQ-basierten Abfragen. Diese Klassen resultieren aus Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase.

Diese Assembly wird als NuGet-Paket verteilt: Microsoft.CrmSdk.Data

Änderungen an der Kernplattform

Die folgenden Änderungen an den standardmäßigen Dataverse-Referenztypen wurden eingeführt, um virtuelle Tabellen zu unterstützen.

Neue Tabellen

Dataverse macht virtuelle Tabellendatenanbieter und -quellen als die folgenden Tabellen verfügbar: EntityDataProvider und EntityDataSource.

Neue Tabellendefinitionseigenschaften

Der Klasse wurden vier neue Eigenschaften hinzugefügt EntityMetadata :

Eigentum Description
DataProviderId GUID, die den zugehörigen anbieter für virtuelle Tabellendaten identifiziert
DataSourceId GUID, die die zugeordnete Datenquelle für virtuelle Tabellen identifiziert
ExternalName Name für diesen Typ in der externen Datenquelle
ExternalCollectionName Pluralname für diesen Typ, verwendet in der Benutzeroberfläche und zur Unterstützung des OData-Zugriffs

Der Klasse wurden zwei neue Eigenschaften hinzugefügt AttributeMetadata :

Eigentum Description
ExternalName Name des Typs in der externen Datenquelle
IsDataSourceSecret Gibt an, ob das Feld vertrauliche Informationen enthält.

Die ExternalName Eigenschaft wurde auch den Klassen OptionMetadata und OptionSetMetadata hinzugefügt. Diese externen Namen unterstützen die Zuordnung externer Datenquellen, indem sie den Namen des zugeordneten Typs in der externen Datenquelle angeben. Diese Eigenschaften werden nur für virtuelle Tabellen verwendet; für einen integrierten oder standardmäßigen benutzerdefinierten Entitätstyp müssen diese externen Namen sein null.

Erstellung virtueller Tabellen

Der Ansatz zum programmgesteuerten Erstellen eines virtuellen Tabellentyps unterscheidet sich geringfügig von der Erstellung eines standardmäßigen benutzerdefinierten Entitätstyps darin:

  • Wenn der verbundene Datenanbieter (und Datenquelle optional) am Erstellungszeitpunkt bekannt ist, dann werden diese bestimmt.
  • Wenn der Datenanbieter für den Typ unbekannt ist, dann wird DataProviderId auf zumindest auf 7015A531-CC0D-4537-B5F2-C882A1EB65AD festgelegt, und die DataSourceId wird auf null festgelegt. Bevor Instanzen dieses Typs zur Laufzeit verwendet werden, müssen diesen Eigenschaften entsprechende Werten zugewiesen werden.

Zwei neue Tabellen, EntityDataProvider und optional EntityDataSource, werden erstellt, wenn Sie ein Plug-In registrieren, und die entsprechenden IDs entitydataproviderid und entitydatasourceidstellen diese erforderlichen GUIDs dar. (Anders als in den meisten Fällen müssen Entwickler nur selten direkt auf diese benutzerdefinierten Typen zugreifen.) Beachten Sie, dass DataSource die Eigenschaft entitydataproviderid enthält, die mit dem entsprechenden DataProvider-Typ übereinstimmen muss, oder es wird eine Laufzeit-Ausnahme ausgelöst.

Warnung

Standardtabellen (nicht virtuell) müssen die Werte der zugehörigen DataProviderId und DataSourceId auf ihre Standardwerte festgelegt haben (null), andernfalls wird eine Laufzeitausnahme ausgelöst. Sobald es erstellt wurde, können Sie nicht von einem nicht virtuellen Typ in einen virtuellen Typ oder zurück konvertieren.

Änderungen im Verhalten der Eigenschaften von Tabellendefinitionen

In der folgenden Tabelle wird beschrieben, wie das Verhalten von Standardmäßigen EntityMetadata-Eigenschaften geändert wird, wenn sie auf virtuelle Tabellen angewendet werden. Einige Eigenschaften sind für virtuelle Tabellen nicht gültig, während andere in Bereich oder Wert eingeschränkt sind.

Metadateneigenschaft Anwendbar? Hinweise
ActivityTypeMask Ungültig Immer 0
Attribute Gültig
AutoCreateAccessTeams Ungültig Immer false
AutoRouteToOwnerQueue Ungültig Immer false, Abfragen werden nicht unterstützt.
CanBeInManyToMany Gültig
CanBePrimaryEntityInRelationship Gültig
CanBeRelatedEntityInRelationship Gültig
CanChangeHierarchicalRelationship Ungültig Immer false, hierarchische Beziehungen werden nicht unterstützt.
CanChangeTrackingBeEnabled Ungültig Immer false, die Änderungsnachverfolgung und -überwachung werden nicht unterstützt.
CanCreateAttributes Gültig
CanCreateCharts Ungültig Immer false
CanCreateForms Gültig
CanCreateViews Gültig
CanEnableSyncToExternalSearchIndex Ungültig Immer false
CanModifyAdditionalSettings Gültig
CanTriggerWorkflow Ungültig Immer false, Workflows können nicht gestartet werden.
ChangeTrackingEnabled Ungültig Immer false
CollectionSchemaName Gültig
DaysSinceRecordLastModified Ungültig Immer null oder 0
Description Gültig
DisplayCollectionName Gültig
Anzeigename Gültig
EnforceStateTransitions Ungültig StateCode und Status werden nicht unterstützt.
EntityColor Gültig
EntityHelpUrl Gültig
EntityHelpUrlEnabled Gültig
EntitySetName Gültig
ExtensionData Ungültig Veraltete Eigenschaft
HasChanged Gültig
IconLargeName Gültig
IconMediumName Gültig
IconSmallName Gültig
IntroducedVersion Gültig
IsActivity Ungültig Immer false, Aktivitäten werden nicht unterstützt.
IsActivityParty Ungültig Immer false
IsAIRUpdated Ungültig Deprecated
IsAuditEnabled Ungültig Immer false, die Überwachung wird nicht unterstützt.
IsAvailableOffline Ungültig Immer false, Offline-Nutzung wird nicht unterstützt.
IsBusinessProcessEnabled Ungültig Immer false, Geschäftsprozesse werden nicht unterstützt.
IsChildEntity Ungültig Immer falsch, alle virtuellen Tabellen sind organisationsintern.
IsConnectionsEnabled Gültig
IsCustomEntity Gültig
IsCustomizable Gültig
IsDocumentManagementEnabled Gültig
IsDocumentRecommendationsEnabled Ungültig Immer false, die neue Funktion wird nicht unterstützt.
IsDuplicateDetectionEnabled Ungültig Immer false, aber Duplikaterkennung kann an der Datenquelle ausgeführt werden.
IsEnabledForCharts Begrenzt Nur für unterstützte Fetch-Klassen.
IsEnabledForTrace Gültig
IsImportable Gültig
IsInteractionCentricEnabled Gültig
IsIntersect Gültig
IsKnowledgeManagementEnabled Ungültig Immer false, Wissensmanagement-Integration wird nicht unterstützt.
IsMailMergeEnabled Gültig
IsManaged Gültig
IsMappable Gültig
IsOfflineInMobileClient Ungültig Immer falsch, virtuelle Tabellenwerte werden nicht für die Offlineverwendung zwischengespeichert.
IsOneNoteIntegrationEnabled Gültig
IsOptimisticConcurrencyEnabled Ungültig Immer false, Parallelität muss in der Datenquelle implementiert werden.
IsPrivate Gültig
IsQuickCreateEnabled Gültig
IsReadOnlyInMobileClient Gültig
IsRenameable Gültig
IsSLAEnabled Ungültig Immer false
IsStateModelAware Ungültig
IsValidForAdvancedFind Gültig
IsValidForQueue Gültig
IsVisibleInMobile Gültig
IsVisibleInMobileClient Gültig
Schlüssel Ungültig Alternativschlüssel werden nicht unterstützt.
LogicalCollectionName Gültig
LogicalName Gültig
ManyToManyRelationships Gültig
ManyToOneRelationships Gültig Nicht unterstützt zwischen zwei virtuellen Tabellen.
MetadataId Gültig
MobileOfflineFilters Ungültig Immer false, Offline-Nutzung wird nicht unterstützt.
ObjectTypeCode Gültig
OneToManyRelationships Gültig
OwnershipType Ungültig Immer OrganizationOwned
PrimaryIdAttribute Gültig
PrimaryImageAttribute Gültig
PrimaryNameAttribute Gültig
Berechtigungen Ungültig
RecurrenceBaseEntityLogicalName Ungültig
ReportViewName Ungültig
SchemaName Gültig
SyncToExternalSearchIndex Ungültig

Verhaltensänderungen der Spaltendefinitionseigenschaft

In der folgenden Tabelle wird erläutert, wie das Verhalten von Standardattributmetadata-Eigenschaften geändert wird, wenn sie auf virtuelle Tabellen angewendet werden. Einige Eigenschaften sind für virtuelle Tabellen nicht gültig, während andere in Bereich oder Wert eingeschränkt sind.

Metadateneigenschaft Anwendbar? Hinweise
ColumnNumber Ungültig
DeprecatedVersion Gültig
Description Gültig
Anzeigename Gültig
EntityLogicalName Gültig
ExtensionData Ungültig
HasChanged Gültig
InheritsFrom Gültig
IntroducedVersion Gültig
IsAuditEnabled Ungültig Immer false, die Überwachung wird nicht unterstützt.
IsCustomAttribute Gültig
IsCustomizable Gültig
IsFilterable Gültig
IsGlobalFilterEnabled Gültig
IsLogical Gültig
IsManaged Gültig
IsPrimaryId Gültig
IsPrimaryName Gültig
IsRenameable Gültig
IsSearchable Gültig
IsSecured Ungültig Immer false, die Sicherheit auf der Feldebene wird nicht unterstützt.
IsSortableEnabled Gültig
IsValidForAdvancedFind Gültig
IsValidForCreate Gültig
IsValidForRead Gültig
IsValidForUpdate Gültig
LinkedAttributeId Gültig
LogicalName Gültig
MetadataId Gültig
RequiredLevel Gültig
SchemaName Gültig
Quelletyp Ungültig Immer 0, berechnet oder Rollupwerte werden nicht unterstützt.

Siehe auch

Erste Schritte mit virtuellen Entitäten
Benutzerdefinierte anbieter für virtuelle Tabellendaten
Beispiel: Generisches Plug-In für virtuelle Tabellendatenanbieter