.NET 開発者は、Microsoft Dataverse Data SDK を使用して、既存のデータ プロバイダーでサポートされていない外部データ ソースの種類を統合するために、カスタム仮想テーブル データ プロバイダーを作成できます。 各データ プロバイダーは、サポートされている CRUD 操作を実装する Dataverse プラグインの再利用可能なセットで構成されます。 仮想エンティティとも呼ばれる仮想テーブルごとに、開発者はプラグインを作成し、作成、更新、取得、RetrieveMultiple、Delete の各操作を表すプラグインを登録できます。 このセクションでは、データ プロバイダーに関する基本的な情報と、コード例など、カスタム プロバイダーを開発するためのアプローチについて説明します。
注
カスタム データ ソース プロバイダー作成の代替策として、既存のデータ データ プロバイダー対するデータ ソースの調整を検討する必要があります。 たとえば、外部データ ソースへの OData v4 インターフェイスを作成する場合は、CRUD 操作もサポートする、提供された標準の OData v4 データ プロバイダーを使用して直接アクセスできます。 この REST インターフェイスを追加するメカニズムは、基盤となるデータ サービス テクノロジにより異なります。たとえば、WCF Data Services 4.5 を参照してください。 OData は広範囲に及ぶ専用ツールおよび互換性技術を持ち、業界からの広い支持を得ています。
[前提条件]
カスタム データ プロバイダーには、作成および管理のための実質的開発リソースが必要です。 次の領域の基本的な知識が必要です。
- 外部データ ソース スキーマおよび関連するデータ アクセスの技術。 このドメインに関する知識は、外部データ ソースの種類特有です。
- データバース定義スキーマ: 詳細情報: コードを使用してテーブルと列の定義を操作します。
- Dataverse イベント フレームワーク: 詳細情報: Event Framework。
- Dataverse プラグインのアーキテクチャと開発: 詳細情報: プラグインを 使用してビジネス プロセスを拡張する。
Microsoft.Xrm.Sdk.Data.dll
アセンブリは、NuGet パッケージとして使用できます: Microsoft.CrmSdk.Data
プロバイダのカテゴリ
仮想テーブル データ SDK アセンブリを使用して作成できるデータ プロバイダーには、汎用または対象の 2 つの一般的なカテゴリがあります。 以下の表はこれらのアプローチを説明し、そのアプローチに最適なデータ プロバイダー開発モデルを照合します。
カテゴリ | Dev モデル | 説明 |
---|---|---|
ジェネリック | 「地金」プロバイダ | これらのプロバイダーは、FetchXML クエリ式を関連する要求に柔軟に外部データ ソースに変換し、結果のレコードを返すことができます。 このようなプロバイダーは、このデータ ソースの種類のすべてのインスタンスで再使用することができます。 このアプローチは最も一般的ですが、開発はより複雑になります。 データ ソースのスキーマが変更された場合は、影響を受ける仮想テーブルのみを再マップする必要があります。 |
対象範囲の限定 | 既知のスキーマの LINQ プロバイダー | このようなプロバイダーは、関連する LINQ コールに対するクエリのみを、既知の、既存データ ソースのインスタンスに変換します。 LINQ 照会に対してデータ ソースを有効にする のトピックスで説明されているように、データ ソースは LINQ プロバイダーである必要があります。 このアプローチは特定のデータ ソースのインスタンスに制限されますが、コーディングの必要が少なくなります。 データ ソースのスキーマを変更する場合、プロバイダーを更新および再作成する必要があります。 |
標準の OData v4 データ プロバイダーと Azure Cosmos DB データ プロバイダーは、汎用プロバイダーの例です。
カスタム データ プロバイダーを使用する手順
Dataverse アプリケーションにインポートできる仮想テーブル データ プロバイダー ソリューションを作成するには、いくつかの手順が必要です。
- カスタム データ プロバイダー プラグイン DLL (または一連の DLL) を開発します。
- プラグイン登録ツール (PRT) を使用して、カスタム データ プロバイダーを Dataverse サービスに登録します。
- データ プロバイダー ソリューションを作成します。
- データ型または特定のインスタンスを反映するようにデータ ソース テーブルをカスタマイズします。
- カスタム データ プロバイダー ソリューションをエクスポートします。
詳細情報: サンプル: CRUD 操作を使用したカスタム仮想テーブル プロバイダー
プラグインの開発
仮想テーブルは CRUD 操作をサポートするため、Create、Update、Retrieve、RetrieveMultiple、Delete イベントに登録されているプラグインの形式でデータ プロバイダーを記述します。 各イベントには、戻すデータの種類を説明する実行コンテキスト内の情報が含まれます。
イベント | 実行コンテキスト |
---|---|
取得 | 取得するテーブルと、含める列および関連テーブルについて説明します。 |
リトリーブ マルチプル | クエリを定義する QueryExpression オブジェクトを格納します。 フレームワークには、クエリ式ツリーの異なる部分を参照するように設計された QueryExpressionVisitor クラスが含まれます。 |
両方のイベントで、以下の内容が必要です。
- 実行コンテキスト内のそれぞれの情報を、外部データ ソースに対して機能するクエリに変換します。
- データを外部システムから取得します。
- [取得] では、データをEntityに変換します。それ以外の場合は、RetrieveMultiple の場合はEntityCollectionに変換します。 この結果は、クエリを実行しているユーザーに Dataverse プラットフォームを介して返されます。
Microsoft.Xrm.Sdk.Data名前空間のクラスは、実行コンテキストからの Dataverse クエリ情報を外部データ ソースに適した形式でクエリにマッピングするのに役立つフレームワークを提供します。 このフレームワークは、返されたデータを、Dataverse プラットフォームで想定される適切な Entity または EntityCollection 型に変換するのに役立ちます。
データ プロバイダーの例外
何らかの理由で期待した結果をコードが実現できない場合、適切なエラーをスローする必要があります。 Microsoft.Xrm.Sdk.Data.Exceptions名前空間には、この目的で使用できる、SdkExceptionBaseから派生した次の例外クラスが含まれています。
例外クラス | 説明 |
---|---|
AuthenticationException | エラーは外部データ ソース サービスに対するセキュリティ認証中に発生します。たとえば、外部データ サービスから受け取る HTTP ステータス 401 です。 通常、現在のユーザーが適切な特権を持たない場合、または関連付けられた EntityDataSource の接続情報が不正確であるために発生します。 |
EndpointException | データ ソース テーブルのエンドポイント構成が無効であるか、エンドポイントが存在しません。 |
GenericDataAccessException | 一般的なデータ 悪性 エラーで、エラーがより具体的な例外に対してマッピングされない時に使用します。 |
InvalidMetadataException | |
InvalidQueryException | 指定されたクエリが無効です。たとえば無効な句の組み合わせ、またはサポートされていない比較演算子です。 |
ObjectNotFoundException | 外部データ ソースで指定されたレコードが存在しません。 |
TimeoutException | 外部操作は、許可された時間内に完了しませんでした。たとえば、外部データ サービスからの HTTP 状態 408 の結果などです。 |
プラグイン登録
通常のプラグインとは異なり、プラグイン登録ツール (PRT) を使用して、各イベントのアセンブリとプラグインを登録するだけです。 特定のステップは登録しません。 プラグインは、通常のプラグイン手順では使用できない操作のメイン コア トランザクション ステージであるステージ 30 で実行されます。 手順を登録する代わりに、次の表を使用してデータ プロバイダーを構成します。
テーブル | 説明 |
---|---|
エンティティデータプロバイダ | 各イベントに使用するプラグインと、データ ソースの論理名を定義します。 |
仮想テーブルの定義が構成されると、プラグインは PRT を使用して登録され、 EntityDataProvider テーブルに正しい構成データが設定されると、仮想テーブルは要求への応答を開始します。
詳細情報: データ プロバイダーの作成とプロバイダーへのプラグインの追加
プラグインのデバッグ
カスタム仮想テーブル プロバイダーは、プラグインの一種です。 カスタム仮想テーブル プロバイダーのプラグインをデバッグするには、次のトピックの情報を使用します。 プラグインのデバッグ と チュートリアル: プラグインのデバッグ。
こちらも参照ください
仮想テーブルの使用を開始する
仮想テーブルの API に関する考慮事項
サンプル: 汎用仮想テーブル データ プロバイダー プラグイン