仮想テーブルの API に関する考慮事項
注意
エンティティとテーブルの違いがわかりませんか? Microsoft Dataverse で「開発者: 用語を理解する」を参照してください。
Microsoft Dataverse の仮想テーブル (仮想エンティティ) の導入に関連付けられるテーブル定義に対する変更には 2 つの大きなカテゴリがあります。
- 新しいアセンブリ、名前空間、クラス、およびユーザー定義の仮想テーブル データ プロバイダーの開発をサポートするその他の種類の追加
- 外部データ ソース マッピングをサポートするためのいくつかの追加のプロパティや、この機能の初期実装の制限を反映する既存のテーブルと列のプロパティーの動作の変更を含む、コア プラットフォームの変更
Dynamics 365 Data SDK アセンブリ
Dynamics 365 Data SDK アセンブリ、Microsoft.Xrm.Sdk.Data.dll には、ユーザー定義の仮想テーブル データ プロバイダーの作成を支援する種類が含まれています。 次の名前空間で構成されます:
| 名前空間 | 説明 |
|---|---|
| Microsoft.Xrm.Sdk.Data | AllowedQueryOptions 列挙などのいくつかの一般的な種類を含むベースの名前空間 |
| Microsoft.Xrm.Sdk.Data.CodeGen | 動的リフレクション、種類の一致、およびコードの生成をサポートするクラスとインターフェイスが含まれます。 主に内部プロバイダー エンジンによって使用されます。 |
| Microsoft.Xrm.Sdk.Data.Converters | 標準 XRM タイプを対応する .NET 基本タイプに変換する一連のクラス |
| Microsoft.Xrm.Sdk.Data.Exceptions | ランタイム値の解決時に発生する可能性のあるエラーを表す例外クラスのセット。 すべては Microsoft.Xrm.Sdk.SdkExceptionBase から派生しています。 |
| Microsoft.Xrm.Sdk.Data.Expressions | FILTER、JOIN、および ORDER などのサポートされているクエリ変換の実装を支援するクラス。 |
| Microsoft.Xrm.Sdk.Data.Mappings | 仮想テーブル定義のタイプから外部タイプへのマッピングを構築するクラスとインターフェイス。 |
| Microsoft.Xrm.Sdk.Data.Visitors | RetrieveMultiple 中に ビジター パターン を実装して、データ プロバイダーに渡される QueryExpression パラメーター上で特定の操作を実行するクラス。 一般的なクエリと LINQ ベースの処理の両方に特定のサポートを提供します。 これらのクラスは Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase から派生しています。 |
このアセンブリは NuGet パッケージとして配布されます: Microsoft.CrmSdk.Data
コア プラットフォームへの変更
標準の Dataverse 参照タイプへの次の変更が、仮想テーブルをサポートするために導入されました。
新しいテーブル
Dataverse 仮想テーブルのデータ プロバイダーとソースを次のテーブルとして公開します: EntityDataProvider とEntityDataSource。
新しいテーブル定義のプロパティ
4 つの新しいプロパティが EntityMetadata クラスに追加されました。
| プロパティ | 内容 |
|---|---|
| DataProviderId | 関連する仮想テーブル データ プロバイダーを識別するGUID |
| DataSourceId | 関連する仮想テーブル データ ソースを識別するGUID |
| ExternalName | 外部データ ソースのこの種類の名前 |
| ExternalCollectionName | UI で使用され、OData アクセスをサポートする、この種類の複数名 |
2 つの新しいプロパティが AttributeMetadata クラスに追加されました。
| プロパティ | 説明 |
|---|---|
| ExternalName | 外部データ ソースの種類の名前 |
| IsDataSourceSecret | このフィールドに機密情報を含んでいるかどうかを示します |
ExternalName プロパティも、OptionMetadata および OptionSetMetadata クラスに追加されました。 これらの外部名称は、外部データソース内の関連する種類の名前を指定することで、外部データソースのマッピングを補助します。 これらのプロパティは仮想ソースでのみ使用されます。組み込みまたは標準のユーザー定義にエンティティの種類の場合、これらの外部名は null である必要があります。
仮想テーブルの作成
仮想テーブルの種類をプログラムで作成するアプローチは、標準のユーザー定義のエンティティの種類の作成とは少し異なります:
- 関連付けられたデータ プロバイダー (およびオプションのデータ ソース) が作成時にわかっている場合は、これらが指定されます。
- この種類のデータ プロバイダーがわからない場合は、最低でも、DataProviderId は
7015A531-CC0D-4537-B5F2-C882A1EB65ADに設定し、DataSourceId はnullに設定します。 実行時にこの種類のインスタンスを使用する前に、これらのプロパティに適切な値を割り当てる必要があります。
2 つの新しいテーブル、EntityDataProvider およびオプションの EntityDataSource は、プラグイン、およびそれぞれの ID、entitydataproviderid および entitydatasourceid を登録する際に作成され、これらの必要な GUID を表します。 (それ以外の場合は、開発者はこれらのユーザー定義の種類に直接アクセスすることはめったにありません。) DataSourceには、対応する DataProvider の種類と一致する必要があるプロパティ entitydataproviderid が含まれているか、実行時例外がスローされることに注意してください。
警告
標準 (非仮想) テーブルは関連する DataProviderId と DataSourceId の値が既定の値 (null) に設定されている必要があり、それ以外の場合は実行時例外がスローされます。 作成される、非仮想の種類を仮想の種類に変換したり、またはその逆を行うことはできません。
テーブル定義プロパティの動作の変更
次の表は、標準の EntityMetadata properties の動作が仮想テーブルに適用された際にどのように変更されるかについて説明しています。 一部のプロパティは仮想テーブルには有効ではありませんが、その他のプロパティは範囲や値に制限があります。
| メタデータ プロパティ | 適用? | メモ |
|---|---|---|
| ActivityTypeMask | 無効 | 常時 0 |
| 属性 | 有効 | |
| AutoCreateAccessTeams | 無効 | 常時 false |
| AutoRouteToOwnerQueue | 無効 | 常時 false、キューはサポートされていません。 |
| CanBeInManyToMany | 有効 | |
| CanBePrimaryEntityInRelationship | 有効 | |
| CanBeRelatedEntityInRelationship | 有効 | |
| CanChangeHierarchicalRelationship | 無効 | 常時 false、階層型の関連付けはサポートされていません。 |
| CanChangeTrackingBeEnabled | 無効 | 常時 false、変更の追跡および値の監査はサポートされていません。 |
| CanCreateAttributes | 有効 | |
| CanCreateCharts | 無効 | 常時 false |
| CanCreateForms | 有効 | |
| CanCreateViews | 有効 | |
| CanEnableSyncToExternalSearchIndex | 無効 | 常時 false |
| CanModifyAdditionalSettings | 有効 | |
| CanTriggerWorkflow | 無効 | 常時 false、ワークフローはトリガーできません。 |
| ChangeTrackingEnabled | 無効 | 常時 false |
| CollectionSchemaName | 有効 | |
| DaysSinceRecordLastModified | 無効 | 常時 null または 0 |
| 内容 | 有効 | |
| DisplayCollectionName | 有効 | |
| DisplayName | 有効 | |
| EnforceStateTransitions | 無効 | StateCode とステータスはサポートされていません。 |
| EntityColor | 有効 | |
| EntityHelpUrl | 有効 | |
| EntityHelpUrlEnabled | 有効 | |
| EntitySetName | 有効 | |
| ExtensionData | 無効 | 廃止されたプロパティ |
| HasChanged | 有効 | |
| IconLargeName | 有効 | |
| IconMediumName | 有効 | |
| IconSmallName | 有効 | |
| IntroducedVersion | 有効 | |
| IsActivity | 無効 | 常時 false、アクティビティはサポートされていません。 |
| IsActivityParty | 無効 | 常時 false |
| IsAIRUpdated | 無効 | 廃止 |
| IsAuditEnabled | 無効 | 常時 false、監査はサポートされていません。 |
| IsAvailableOffline | 無効 | 常時 false、オフラインでの使用はサポートされていません。 |
| IsBusinessProcessEnabled | 無効 | 常時 false、ビジネスプロセスはサポートされていません。 |
| IsChildEntity | 無効 | 常時 false で、すべての仮想テーブルは組織的に所有されます。 |
| IsConnectionsEnabled | 有効 | |
| IsCustomEntity | 有効 | |
| IsCustomizable | 有効 | |
| IsDocumentManagementEnabled | 有効 | |
| IsDocumentRecommendationsEnabled | 無効 | 常時false、この新しい機能はサポートされていません。 |
| IsDuplicateDetectionEnabled | 無効 | 常時 false、しかし重複データ検出はソース データで実行できます。 |
| IsEnabledForCharts | 制限あり | サポートされた Fetch 句のみ。 |
| IsEnabledForTrace | 有効 | |
| IsImportable | 有効 | |
| IsInteractionCentricEnabled | 有効 | |
| IsIntersect | 有効 | |
| IsKnowledgeManagementEnabled | 無効 | 常時 false、ナレッジ マネージメントの統合はサポートされていません。 |
| IsMailMergeEnabled | 有効 | |
| IsManaged | 有効 | |
| IsMappable | 有効 | |
| IsOfflineInMobileClient | 無効 | 常時 false、仮想テーブル値はオフラインでの使用にはキャッシュされません。 |
| IsOneNoteIntegrationEnabled | 有効 | |
| IsOptimisticConcurrencyEnabled | 無効 | 常時 false、同時実行をデータ ソースで実行する必要があります。 |
| IsPrivate | 有効 | |
| IsQuickCreateEnabled | 有効 | |
| IsReadOnlyInMobileClient | 有効 | |
| IsRenameable | 有効 | |
| IsSLAEnabled | 無効 | 常時 false |
| IsStateModelAware | 無効 | |
| IsValidForAdvancedFind | 有効 | |
| IsValidForQueue | 有効 | |
| IsVisibleInMobile | 有効 | |
| IsVisibleInMobileClient | 有効 | |
| キー | 無効 | 代替キーはサポートされていません。 |
| LogicalCollectionName | 有効 | |
| LogicalName | 有効 | |
| ManyToManyRelationships | 有効 | |
| ManyToOneRelationships | 有効 | 2 つの仮想テーブル間ではサポートされていません。 |
| MetadataId | 有効 | |
| MobileOfflineFilters | 無効 | 常時 false、オフラインでの使用はサポートされていません。 |
| ObjectTypeCode | 有効 | |
| OneToManyRelationships | 有効 | |
| OwnershipType | 無効 | 常時 OrganizationOwned |
| PrimaryIdAttribute | 有効 | |
| PrimaryImageAttribute | 有効 | |
| PrimaryNameAttribute | 有効 | |
| 特権 | 無効 | |
| RecurrenceBaseEntityLogicalName | 無効 | |
| ReportViewName | 無効 | |
| スキーマ名 | 有効 | |
| SyncToExternalSearchIndex | 無効 |
列定義プロパティの動作の変更
次の表は、標準の AttributeMetadata のプロパティ の動作が仮想テーブルに適用されたときにどのように変更されるかについて説明しています。 一部のプロパティは仮想テーブルには有効ではありませんが、その他のプロパティは範囲や値に制限があります。
| メタデータ プロパティ | 適用? | メモ |
|---|---|---|
| ColumnNumber | 無効 | |
| DeprecatedVersion | 有効 | |
| 内容 | 有効 | |
| DisplayName | 有効 | |
| EntityLogicalName | 有効 | |
| ExtensionData | 無効 | |
| HasChanged | 有効 | |
| InheritsFrom | 有効 | |
| IntroducedVersion | 有効 | |
| IsAuditEnabled | 無効 | 常時 false、監査はサポートされていません。 |
| IsCustomAttribute | 有効 | |
| IsCustomizable | 有効 | |
| IsFilterable | 有効 | |
| IsGlobalFilterEnabled | 有効 | |
| IsLogical | 有効 | |
| IsManaged | 有効 | |
| IsPrimaryId | 有効 | |
| IsPrimaryName | 有効 | |
| IsRenameable | 有効 | |
| IsSearchable | 有効 | |
| IsSecured | 無効 | 常時 false、フィールドレベルのセキュリティはサポートされていません。 |
| IsSortableEnabled | 有効 | |
| IsValidForAdvancedFind | 有効 | |
| IsValidForCreate | 有効 | |
| IsValidForRead | 有効 | |
| IsValidForUpdate | 有効 | |
| LinkedAttributeId | 有効 | |
| LogicalName | 有効 | |
| MetadataId | 有効 | |
| RequiredLevel | 有効 | |
| SchemaName | 有効 | |
| SourceType | 無効 | 常時 0、計算されたまたはロールアップ値はサポートされていません。 |
関連項目
仮想エンティティに関する入門情報
カスタム仮想テーブル データ プロバイダー
サンプル: 汎用仮想テーブル データ プロバイダー プラグイン
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。
フィードバック
フィードバックの送信と表示