次の方法で共有


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

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

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

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 と Status はサポートされていません。
EntityColor 有効な
EntityHelpUrl 有効な
EntityHelpUrlEnabled 有効な
EntitySetName 有効な
ExtensionData 無効 廃止されたプロパティ
HasChanged 有効な
IconLargeName 有効な
IconMediumName 有効な
IconSmallName 有効な
IntroducedVersion 有効な
IsActivity 無効 アクティビティは常に false でサポートされていません。
IsActivityParty 無効 常時 false
IsAIRUpdated 無効 Deprecated
IsAuditEnabled 無効 常に「false」であり、監査はサポートされていません。
IsAvailableOffline 無効 常に falseのため、オフライン使用はサポートされていません。
IsBusinessProcessEnabled 無効 常に偽であり、ビジネスプロセスはサポートされていません。
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 有効な
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 で、計算値やロールアップ値はサポートされていません。

こちらも参照ください

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