Intercepteurs

Les intercepteurs permettent d’exécuter une logique côté serveur personnalisée avant et après les opérations Dataverse. En implémentant l’interface ITableRecordInterceptor , vous pouvez vous connecter au cycle de vie de la création d’enregistrements, des mises à jour, suppressions, associations et dissociations.

Aperçu

Les cas d’usage courants des intercepteurs incluent :

Note

Les intercepteurs s’exécutent sur le serveur et s’appliquent à toutes les opérations de toutes les tables. Utilisez cette TableRecord.TableName propriété pour filtrer la logique vers des tables spécifiques.

Commencer

1. Créer un intercepteur

Créez une classe qui implémente ITableRecordInterceptor et fournit des implémentations pour chaque méthode. Retournez Task.CompletedTask pour les crochets dont vous n’avez pas besoin.

2. Enregistrer dans l’injection de dépendance

Enregistrez votre intercepteur dans le conteneur DI du fichier de Program.cs votre projet :

Puisque les intercepteurs sont résolus à partir du conteneur DI, vous pouvez injecter tous les services nécessaires via l’injection du constructeur.

Crochets du cycle de vie

L’interface fournit des crochets avant et après pour cinq types d’opérations :

Créer

OnBeforeCreateAsync et OnAfterCreateAsync de créer de nouveaux disques en partant. Le crochet avant est idéal pour définir les valeurs par défaut ou valider les champs requis.

Mise à jour

OnBeforeUpdateAsync et OnAfterUpdateAsync faire des enregistrements de mises à jour en contournement. Utilisez le crochet avant pour faire respecter les règles métier ou modifier les valeurs avant qu’elles ne soient maintenues.

Supprimer

OnBeforeDeleteAsync et OnAfterDeleteAsync contourner la suppression des enregistrements. Notez que ces crochets reçoivent un TableRecordReference (nom de table et ID) plutôt qu’un fichier complet TableRecord.

Associé et Dissociation

OnBeforeAssociateAsync / OnAfterAssociateAsync et OnBeforeDisassociateAsync / OnAfterDisassociateAsync fonctionnent lorsque des relations de plusieurs-à-plusieurs sont créées ou supprimées.

Services d’injection

Comme les intercepteurs sont enregistrés dans le conteneur DI, vous pouvez injecter des services via injection de constructeur. Cela est utile pour accéder à l’état d’authentification, la journalisation ou d’autres services applicatifs.

Référence API

ITableRecordInterceptor Interface

Méthodes

Nom
Paramètres
Type
Description
OnAfterAssociateAsyncTableRecord record
Task
Invoqué après qu’un dossier a été associé à Un autre disque via une relation de nombreux à plusieurs. Utile pour mettre à jour les agrégats associés, émettant des événements de domaine, ou maintenant l’intégrité référentielle.
OnAfterCreateAsyncTableRecord record
Task
Invoqué immédiatement après la création d’un nouveau dossier. Utilisez-le pour les actions post-création telles que la journalisation, les notifications, ou déclencher des flux de travail en aval.
OnAfterDeleteAsyncTableRecordReference record
Task
Invoqué après la suppression d’un enregistrement. Utile pour les tâches de nettoyage, la journalisation d’audit ou la cascade d’événements de domaine.
OnAfterDisassociateAsyncTableRecord record
Task
Invoqué après qu’un enregistrement a été dissocié de un autre record. Utile pour le nettoyage, la mise à jour des agrégats, ou déclencher des processus de suivi.
OnAfterUpdateAsyncTableRecord record
Task
Invoqué après qu’un enregistrement existant a été mis à jour. Utile pour la journalisation d’audit, l’invalidation du cache ou les déclenchements Processus de suivi.
OnBeforeAssociateAsyncTableRecord record
Task
Invoqué avant qu’un enregistrement ne soit associé à un autre Enregistrer via une relation de plusieurs à plusieurs. Utilisez cela pour valider l’association, faire respecter règles de relation, ou empêcher les liens invalides.
OnBeforeCreateAsyncTableRecord record
Task
Invoqué immédiatement avant la création d’un nouveau dossier. Utilisez cela pour valider, muter ou préparer l’enregistrement avant la persistance.
OnBeforeDeleteAsyncTableRecordReference record
Task
Invoqué avant qu’un enregistrement ne soit supprimé. Utilisez cela pour faire respecter les règles de suppression, effectuer des conversions par suppression douce, ou bloquer la suppression sous certaines conditions.
OnBeforeDisassociateAsyncTableRecord record
Task
Invoqué avant qu’un enregistrement ne soit dissocié d’un autre Record. Utilisez cela pour valider la dissociation, faire respecter des contraintes, ou la suppression de blocages des relations requises.
OnBeforeUpdateAsyncTableRecord record
Task
Invoqué avant qu’un enregistrement existant ne soit mis à jour. Utilisez cela pour valider les modifications, faire respecter les règles métier ou modifier le dossier avant la mise à jour a été conservé.
Nom: OnAfterAssociateAsync
Paramètres: TableRecord record
Type: Task
Description: Invoqué après qu’un dossier a été associé à Un autre disque via une relation de nombreux à plusieurs. Utile pour mettre à jour les agrégats associés, émettant des événements de domaine, ou maintenant l’intégrité référentielle.
Nom: OnAfterCreateAsync
Paramètres: TableRecord record
Type: Task
Description: Invoqué immédiatement après la création d’un nouveau dossier. Utilisez-le pour les actions post-création telles que la journalisation, les notifications, ou déclencher des flux de travail en aval.
Nom: OnAfterDeleteAsync
Paramètres: TableRecordReference record
Type: Task
Description: Invoqué après la suppression d’un enregistrement. Utile pour les tâches de nettoyage, la journalisation d’audit ou la cascade d’événements de domaine.
Nom: OnAfterDisassociateAsync
Paramètres: TableRecord record
Type: Task
Description: Invoqué après qu’un enregistrement a été dissocié de un autre record. Utile pour le nettoyage, la mise à jour des agrégats, ou déclencher des processus de suivi.
Nom: OnAfterUpdateAsync
Paramètres: TableRecord record
Type: Task
Description: Invoqué après qu’un enregistrement existant a été mis à jour. Utile pour la journalisation d’audit, l’invalidation du cache ou les déclenchements Processus de suivi.
Nom: OnBeforeAssociateAsync
Paramètres: TableRecord record
Type: Task
Description: Invoqué avant qu’un enregistrement ne soit associé à un autre Enregistrer via une relation de plusieurs à plusieurs. Utilisez cela pour valider l’association, faire respecter règles de relation, ou empêcher les liens invalides.
Nom: OnBeforeCreateAsync
Paramètres: TableRecord record
Type: Task
Description: Invoqué immédiatement avant la création d’un nouveau dossier. Utilisez cela pour valider, muter ou préparer l’enregistrement avant la persistance.
Nom: OnBeforeDeleteAsync
Paramètres: TableRecordReference record
Type: Task
Description: Invoqué avant qu’un enregistrement ne soit supprimé. Utilisez cela pour faire respecter les règles de suppression, effectuer des conversions par suppression douce, ou bloquer la suppression sous certaines conditions.
Nom: OnBeforeDisassociateAsync
Paramètres: TableRecord record
Type: Task
Description: Invoqué avant qu’un enregistrement ne soit dissocié d’un autre Record. Utilisez cela pour valider la dissociation, faire respecter des contraintes, ou la suppression de blocages des relations requises.
Nom: OnBeforeUpdateAsync
Paramètres: TableRecord record
Type: Task
Description: Invoqué avant qu’un enregistrement existant ne soit mis à jour. Utilisez cela pour valider les modifications, faire respecter les règles métier ou modifier le dossier avant la mise à jour a été conservé.