迎撃機

インターセプターはDataverse操作の前後でカスタムサーバーサイドロジックを実行することができます。 ITableRecordInterceptor インターフェースを実装することで、レコード作成、更新、削除、関連付け、分離のライフサイクルにフックをつけることができます。

概要

迎撃機の一般的なユースケースには以下があります:

注記

インターセプターは サーバー 上で動作し、すべてのテーブルの操作に適用されます。 TableRecord.TableName プロパティを使ってロジックを特定のテーブルにフィルタリングします。

はじめに

1. インターセプターの作成

ITableRecordInterceptorを実装し、各メソッドに実装を提供するクラスを作成しましょう。不要なフックは返品Task.CompletedTask

2. 依存注入におけるレジスタ

プロジェクトの Program.cs ファイル内のDIコンテナにインターセプターを登録してください:

インターセプターはDIコンテナから解決されるため、必要なサービスはコンストラクタ注入で注入できます。

ライフサイクルフック

インターフェースは5種類の操作に対するビフォーフックとアフターフックを提供します:

作成

OnBeforeCreateAsync そして OnAfterCreateAsync 新しい記録を作り回る。ビフォーフックはデフォルト値の設定や必要項目の検証に最適です。

アップデート

OnBeforeUpdateAsync 記録の更新を回 OnAfterUpdateAsync 。ビフォーフックを使って、ビジネスルールを強制したり、値を永続化する前に修正したりしましょう。

削除

OnBeforeDeleteAsyncそしてOnAfterDeleteAsync記録削除を回避しています。これらのフックは完全なTableRecordではなく、TableRecordReference(テーブル名とID)を受け取ることに注意してください。

アソシエイトとディスアソシエイト

OnBeforeAssociateAsync/ 多対多の関係が作られたり削除されたりしたときにOnAfterDisassociateAsync OnAfterAssociateAsyncOnBeforeDisassociateAsync / が実行されます。

注入サービス

インターセプターはDIコンテナに登録されるため、コンストラクタ注入を通じてサービスを注入できます。これは認証状態、ログ記録、その他のアプリケーションサービスへのアクセスに役立ちます。

API参照

ITableRecordInterceptor Interface

方法

名称
パラメータ
種類
概要
OnAfterAssociateAsyncTableRecord record
Task
記録が関連付けられた後に呼び出される また多対多の関係によるレコード。関連する集約の更新に役立ちます。 ドメインイベントの発行、または参照整合性の維持。
OnAfterCreateAsyncTableRecord record
Task
新しい記録が作成されるとすぐに発動されます。 ログ作成や通知などの後作成アクションにこれを使います。 または下流のワークフローをトリガーする。
OnAfterDeleteAsyncTableRecordReference record
Task
記録が削除された後に発動されます。 クリーンアップ作業、監査ログ、ドメインイベントの連鎖処理に役立ちます。
OnAfterDisassociateAsyncTableRecord record
Task
記録が から切り離された後に呼び出される また一つの記録。整理や集約データの更新に役立ちます。 またはフォローアッププロセスを引き起こすこともあります。
OnAfterUpdateAsyncTableRecord record
Task
既存の記録が更新された後に呼び出します。 監査ログ、キャッシュ無効化、またはトリガーに有用です フォローアップのプロセス。
OnBeforeAssociateAsyncTableRecord record
Task
レコードが他のレコードに関連付けられる前に呼び出しられます 多対多の関係で記録する。これを使って協会を正当化し、強制する 関係ルール、または無効なリンクの防止。
OnBeforeCreateAsyncTableRecord record
Task
新しい記録が作成される直前に呼び出します。 これを用いて、永続化前にレコードを検証、変異、または準備します。
OnBeforeDeleteAsyncTableRecordReference record
Task
レコードが削除される前に呼び出します。 これを使って削除ルールを強制したり、ソフトデリット変換を実行したりします。 または特定の条件下でのブロック削除。
OnBeforeDisassociateAsyncTableRecord record
Task
レコードが他のレコードから切り離される前に呼び出しられます 記録。これを使い、解離を正当化し、強制する 制約、または必要な関係のブロック除去。
OnBeforeUpdateAsyncTableRecord record
Task
既存のレコードが更新される前に呼び出しられます。 これを使って変更の検証、ビジネスルールの強制、または修正に使います 更新前のレコードが永続化されます。
名称: OnAfterAssociateAsync
パラメータ: TableRecord record
種類: Task
概要: 記録が関連付けられた後に呼び出される また多対多の関係によるレコード。関連する集約の更新に役立ちます。 ドメインイベントの発行、または参照整合性の維持。
名称: OnAfterCreateAsync
パラメータ: TableRecord record
種類: Task
概要: 新しい記録が作成されるとすぐに発動されます。 ログ作成や通知などの後作成アクションにこれを使います。 または下流のワークフローをトリガーする。
名称: OnAfterDeleteAsync
パラメータ: TableRecordReference record
種類: Task
概要: 記録が削除された後に発動されます。 クリーンアップ作業、監査ログ、ドメインイベントの連鎖処理に役立ちます。
名称: OnAfterDisassociateAsync
パラメータ: TableRecord record
種類: Task
概要: 記録が から切り離された後に呼び出される また一つの記録。整理や集約データの更新に役立ちます。 またはフォローアッププロセスを引き起こすこともあります。
名称: OnAfterUpdateAsync
パラメータ: TableRecord record
種類: Task
概要: 既存の記録が更新された後に呼び出します。 監査ログ、キャッシュ無効化、またはトリガーに有用です フォローアップのプロセス。
名称: OnBeforeAssociateAsync
パラメータ: TableRecord record
種類: Task
概要: レコードが他のレコードに関連付けられる前に呼び出しられます 多対多の関係で記録する。これを使って協会を正当化し、強制する 関係ルール、または無効なリンクの防止。
名称: OnBeforeCreateAsync
パラメータ: TableRecord record
種類: Task
概要: 新しい記録が作成される直前に呼び出します。 これを用いて、永続化前にレコードを検証、変異、または準備します。
名称: OnBeforeDeleteAsync
パラメータ: TableRecordReference record
種類: Task
概要: レコードが削除される前に呼び出します。 これを使って削除ルールを強制したり、ソフトデリット変換を実行したりします。 または特定の条件下でのブロック削除。
名称: OnBeforeDisassociateAsync
パラメータ: TableRecord record
種類: Task
概要: レコードが他のレコードから切り離される前に呼び出しられます 記録。これを使い、解離を正当化し、強制する 制約、または必要な関係のブロック除去。
名称: OnBeforeUpdateAsync
パラメータ: TableRecord record
種類: Task
概要: 既存のレコードが更新される前に呼び出しられます。 これを使って変更の検証、ビジネスルールの強制、または修正に使います 更新前のレコードが永続化されます。