次の方法で共有


仮想テーブルの API に関する考慮事項

Microsoft Dataverse での仮想テーブル (仮想エンティティとも呼ばれます) の導入に関連付けられているテーブル定義システムには、次の 2 つの大きなカテゴリの変更があります。

  • カスタム仮想テーブル データ プロバイダーの開発をサポートするための新しいアセンブリ、名前空間、クラス、およびその他の型の追加
  • 外部データ ソース マッピングをサポートするための追加のプロパティや、この機能の初期実装の制限を反映した既存のテーブルおよび列プロパティの動作の変更など、コア プラットフォームへの変更

Dynamics 365 Data SDK アセンブリ

Dynamics 365 Data SDK アセンブリ Microsoft.Xrm.Sdk.Data.dllには、カスタム仮想テーブル データ プロバイダーの作成に役立つ型が含まれています。 次の名前空間で構成されます:

Namespace Description
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 は、 EntityDataProviderEntityDataSource のテーブルとして、仮想テーブルのデータ プロバイダーとソースを公開します。

新しいテーブル定義プロパティ

EntityMetadata クラスに 4 つの新しいプロパティが追加されました。

プロパティ Description
DataProviderId 関連付けられている仮想テーブル データ プロバイダーを識別する GUID
DataSourceId 関連付けられている仮想テーブル データ ソースを識別する GUID
ExternalName 外部データ ソース内のこのタイプの名前
ExternalCollectionName UI で使用され、OData アクセスをサポートする、この種類の複数名

AttributeMetadata クラスに 2 つの新しいプロパティが追加されました。

プロパティ Description
ExternalName 外部データソース内の型の名前
IsDataSourceSecret フィールドに機密情報が含まれているかどうかを示します

ExternalName プロパティは、OptionMetadataクラスと OptionSetMetadata クラスにも追加されました。 これらの外部名は、外部データ ソースに関連付けられている型の名前を指定することで、外部データ ソースマッピングを支援します。 これらのプロパティは、仮想テーブルにのみ使用されます。組み込みまたは標準のカスタム エンティティ型の場合、これらの外部名は nullする必要があります。

仮想テーブルの作成

仮想テーブルの種類をプログラムで作成する方法は、次の点で標準のカスタム エンティティ型の作成とは若干異なります。

  • 関連付けられたデータ プロバイダー (およびオプションのデータ ソース) が作成時にわかっている場合は、これらが指定されます。
  • この種類のデータ プロバイダーがわからない場合は、最低でも、DataProviderId7015A531-CC0D-4537-B5F2-C882A1EB65AD に設定し、DataSourceIdnull に設定します。 実行時にこの種類のインスタンスを使用する前に、これらのプロパティに適切な値を割り当てる必要があります。

プラグインを登録すると、 EntityDataProvider と必要に応じて EntityDataSource の 2 つの新しいテーブルが作成され、それぞれの ID、 entitydataprovideridentitydatasourceidは、これらの必要な GUID を表します。 (そうしないと、開発者がこれらのカスタム型に直接アクセスする必要はほとんどありません)。DataSource には、対応する DataProvider 型と一致する必要があるプロパティ entitydataproviderid が含まれているか、ランタイム例外がスローされることに注意してください。

Warnung

標準 (非仮想) テーブルでは、関連付けられている DataProviderId の値を持つ必要があり、 DataSourceId 既定値 (null) に設定されている必要があります。それ以外の場合は、ランタイム例外がスローされます。 作成される、非仮想の種類を仮想の種類に変換したり、またはその逆を行うことはできません。

テーブル定義プロパティの動作の変更

次の表では、仮想テーブルに適用されるときに標準 の EntityMetadata プロパティ の動作がどのように変更されるかについて詳しく説明します。 仮想テーブルでは無効なプロパティもあれば、スコープまたは値が制限されているプロパティもあります。

メタデータ プロパティ 適用? Notes
ActivityTypeMask 無効 常時 0
Attributes 有効な
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
Description 有効な
DisplayCollectionName 有効な
DisplayName 有効な
EnforceStateTransitions 無効 StateCode とステータスはサポートされていません。
EntityColor 有効な
EntityHelpUrl 有効な
EntityHelpUrlEnabled 有効な
EntitySetName 有効な
ExtensionData 無効 廃止されたプロパティ
HasChanged 有効な
IconLargeName 有効な
IconMediumName 有効な
IconSmallName 有効な
IntroducedVersion 有効な
IsActivity 無効 常時 false、アクティビティはサポートされていません。
IsActivityParty 無効 常時 false
IsAIRUpdated 無効 Deprecated
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 無効 常に偽であるため、仮想テーブルの値はオフライン用にキャッシュされません。
IsOneNoteIntegrationEnabled 有効な
IsOptimisticConcurrencyEnabled 無効 常時 false、同時実行をデータ ソースで実行する必要があります。
IsPrivate 有効な
IsQuickCreateEnabled 有効な
IsReadOnlyInMobileClient 有効な
IsRenameable 有効な
IsSLAEnabled 無効 常時 false
IsStateModelAware 無効
IsValidForAdvancedFind 有効な
IsValidForQueue 有効な
IsVisibleInMobile 有効な
IsVisibleInMobileClient 有効な
Keys 無効 代替キーはサポートされていません。
LogicalCollectionName 有効な
LogicalName 有効な
ManyToManyRelationships 有効な
ManyToOneRelationships 有効な 2 つの仮想テーブル間ではサポートされていません。
MetadataId 有効な
MobileOfflineFilters 無効 常時 false、オフラインでの使用はサポートされていません。
ObjectTypeCode 有効な
OneToManyRelationships 有効な
OwnershipType 無効 常時 OrganizationOwned
PrimaryIdAttribute 有効な
PrimaryImageAttribute 有効な
PrimaryNameAttribute 有効な
特権 無効
RecurrenceBaseEntityLogicalName 無効
ReportViewName 無効
SchemaName 有効な
SyncToExternalSearchIndex 無効

列定義プロパティの動作の変更

次の表では、仮想テーブルに適用されるときに標準の AttributeMetadata プロパティ の動作がどのように変更されるかについて説明します。 仮想テーブルでは無効なプロパティもあれば、スコープまたは値が制限されているプロパティもあります。

メタデータ プロパティ 適用? Notes
ColumnNumber 無効
DeprecatedVersion 有効な
Description 有効な
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 有効な
必須レベル 有効な
SchemaName 有効な
ソースタイプ 無効 常時 0、計算されたまたはロールアップ値はサポートされていません。

こちらも参照ください

仮想エンティティを始める
カスタム仮想テーブル データ プロバイダー
サンプル: 汎用仮想テーブル データ プロバイダー プラグイン