Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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-C882A1EB65ADfestgelegt, und die DataSourceId wird aufnullfestgelegt. 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