API-Überlegungen von virtuelle Tabellen
Es gibt zwei breite Kategorien der Änderungen des Tabellendefinitionssystems, das im Zusammenhang mit der Einführung der virtuellen Tabellen (auch bekannt als virtuelle Entitäten in) Microsoft Dataverse verbunden sind:
- Hinzufügung eines neuen Assemblys, der Namespaces, Klassen und anderer Typen, um die Entwicklung der virtuellen Tabellendatenanbieter zu unterstützen
- Änderungen an der Kernplattform einschließlich einige zusätzliche Eigenschaften, um die externe Datenquellenzuordnung und Modifizierung des Verhaltens der vorhandenen Tabellen- und -Spalteneigenschaften, die die Beschränkungen der ursprünglichen Implementierung dieser Funktion widerspiegeln, zu unterstützen
Dynamics 365 Data SDK-Assembly
Das Dynamics 365 for Customer Engagement Apps Data SDK-Assembly, Microsoft.Xrm.Sdk.Data.dll
, enthält Typen, die bei der Erstellung der benutzerdefinierten virtuellen Tabellenanbieter hilfreich sind. Es ist in den folgenden Namespaces enthalten:
Namespace | Beschreibung |
---|---|
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 Abfragentransformationen wie FILTER, JOIN und ORDER zu helfen. |
Microsoft.Xrm.Sdk.Data.Mappings | Klassen und Schnittstellen, die die Zuordnung von den Tabellendefinitionstypen zu den externen Typen aufbaut. |
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.Daten
Änderungen an der Kernplattform
Die folgenden Änderungen an den standardmäßigen Dataverse-App-Referenztypen wurden eingeführt, um virtuelle Tabellen zu unterstützen.
Neue Tabellen
Die Dataverse stellt virtuelle Tabellendatenanbieter und -quellen als die folgenden Tabellen bereit: EntityDataProvider und EntityDataSource
.
Neue Tabellendefinitionseigenschaften
Vier neue Eigenschaften wurden zur Klasse EntityMetadata hinzugefügt:
Eigenschaft | Beschreibung |
---|---|
DataProviderId | GUID, die den verbundenen virtuellen Tabellendatenanbieter bestimmt |
DataSourceId | GUID, das die verbundene virtuelle Tabellendatenquelle bestimmt |
ExternalName | Name für diesen Typ in der externen Datenquelle |
ExternalCollectionName | Pluralname für diesen Typ, der in der UI und zur Unterstützung des OData-Zugriffs verwendet wird. |
Zwei neue Eigenschaften wurden zur Klasse AttributeMetadata hinzugefügt:
Eigenschaft | Beschreibung |
---|---|
ExternalName | Name für diesen Typ in der externen Datenquelle |
IsDataSourceSecret | Bestimmt, ob das Feld vertrauliche Informationen enthält. |
Die ExternalName
-Eigenschaft wurde ebenfalls den Klassen OptionMetadata und OptionSetMetadata übergeben. Diese externen Namen helfen bei der externen Datenquellenzuordnung, indem der Name des verbundenen Typs in der externen Datenquelle bestimmt wird. Diese Eigenschaften werden nur für virtuelle Tabellen verwendet; für einen eingebauten oder Standardtyp der benutzerdefinierten Entität müssen diese externen Namen null
sein.
Virtuelle Tabellenerstellung
Die Vorgehensweise der programmgesteuerten Erstellung eines virtuellen Tabellentyps unterscheidet sich etwas von einer Erstellung der benutzerdefinierten Entitätstypen wie folgt:
- 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 aufnull
festgelegt. Bevor Instanzen dieses Typs zur Laufzeit verwendet werden, müssen diesen Eigenschaften entsprechende Werten zugewiesen werden.
Zwei neue Entitätstypen EntityDataProvider und EntityDataSource
, optional - werden erstellt, wenn Sie ein Plug-In registrieren und seine jeweilige ID, entitydataproviderid
und entitydatasourceid
, die erforderlichen GUIDs darstellen. (Andernfalls müssen die Entwickler manchmal diese benutzerdefinierten Typen direkt aufrufen.) Beachten Sie, dass diese Datenquelle die Eigenschaft entitydataproviderid
, die mit dem entsprechenden Datenanbietertyp übereinstimmen muss, enthält, oder eine Ablaufausnahme wird ausgelöst.
Warnung
(Nicht virtuelle) Standard-Tabellen müssen die Werte derer verbundenen DataProviderId
und DataSourceId
, die für deren Standardwerte (null
) festgelegt sind, besitzen; andernfalls wird eine Ablaufausnahme ausgelöst. Sobald es erstellt wurde, können Sie nicht von einem nicht virtuellen Typ in einen virtuellen Typ oder zurück konvertieren.
Verhaltensänderungen der Tabellendefinitionseigenschaften
Die folgenden Tabellendetails darüber, wie das Verhalten von EntityMetadata-Eigenschaften geändert wird, wenn diese zu den virtuellen Tabellen angewendet werden. Einige Eigenschaften sind für virtuelle Tabellen ungültig, während andere im Umfang oder im Wert beschränkt sind.
Metadateneigenschaft | Anwendbar? | Notizen |
---|---|---|
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 |
Beschreibung | Gültig | |
DisplayCollectionName | Gültig | |
DisplayName | 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 | Veraltet |
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 false, alle virtuellen Tabellen sind im Besitz einer Organisation. |
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 false, virtuelle Tabellenwerte werden für Offline-Nutzung nicht 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 | |
Rechte | ungültig | |
RecurrenceBaseEntityLogicalName | ungültig | |
ReportViewName | ungültig | |
Schemaname | Gültig | |
SyncToExternalSearchIndex | ungültig |
Verhaltensänderungen der Spaltendefinitionseigenschaften
Die folgende Tabellen zeigt, wie das Verhalten von AttributeMetadata-Eigenschaften geändert wird, wenn diese zu den virtuellen Tabellen angewendet werden. Einige Eigenschaften sind für virtuelle Tabellen ungültig, während andere im Umfang oder im Wert beschränkt sind.
Metadateneigenschaft | Anwendbar? | Notizen |
---|---|---|
ColumnNumber | ungültig | |
DeprecatedVersion | Gültig | |
Beschreibung | Gültig | |
DisplayName | 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 | |
SourceType | ungültig | Immer 0, berechnet oder Rollupwerte werden nicht unterstützt. |
Siehe auch
Erste Schritte mit virtuellen Entitäten
Anbieter von benutzerdefinierter virtueller Tabellendaten
Beispiel: Generisches virtuelles Tabellendatenanbieter-Plug-In
Hinweis
Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)
Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).