Interceptores

Los interceptores permiten ejecutar lógica personalizada del lado del servidor antes y después de las operaciones de Dataverse. Al implementar la ITableRecordInterceptor interfaz, puedes conectarte al ciclo de vida de la creación de registros, actualizaciones, eliminaciones, asociaciones y disociaciones.

Resumen

Los casos de uso comunes de los interceptores incluyen:

Nota

Los interceptores se ejecutan en el servidor y se aplican a todas las operaciones de todas las tablas. Usa la TableRecord.TableName propiedad para filtrar la lógica a tablas específicas.

Empezando

1. Crear un interceptor

Crea una clase que implemente ITableRecordInterceptor y proporcione implementaciones para cada método. Devuélvelo Task.CompletedTask por cualquier ganchos que no necesites.

2. Registrar en la inyección de dependencias

Registra tu interceptor en el contenedor DI del archivo de Program.cs tu proyecto:

Dado que los interceptores se resuelven desde el contenedor DI, puedes inyectar cualquier servicio necesario mediante inyección de constructores.

Ganchos del ciclo de vida

La interfaz proporciona ganchos antes y después para cinco tipos de operaciones:

Crear

OnBeforeCreateAsync y OnAfterCreateAsync correr por la creación de nuevos discos. El gancho antes es ideal para establecer valores predeterminados o validar campos requeridos.

Actualización

OnBeforeUpdateAsync y OnAfterUpdateAsync que se corran para registrar actualizaciones. Utiliza el gancho antes para hacer cumplir reglas de negocio o modificar valores antes de que se mantengan.

Borrar

OnBeforeDeleteAsync y OnAfterDeleteAsync evitar la eliminación de registros. Cabe señalar que estos ganchos reciben un TableRecordReference (nombre de tabla e ID) en lugar de un archivo completo TableRecord.

Asociado y Disociado

OnBeforeAssociateAsync / OnAfterAssociateAsync y OnBeforeDisassociateAsync / OnAfterDisassociateAsync se ejecutan cuando se crean o eliminan relaciones de muchos-a-muchos.

Servicios de inyección

Como los interceptores están registrados en el contenedor DI, puedes inyectar servicios mediante inyección de constructores. Esto es útil para acceder al estado de autenticación, registro u otros servicios de aplicación.

Referencia API

ITableRecordInterceptor Interface

Métodos

Nombre
Parámetros
Tipo
Descripción
OnAfterAssociateAsyncTableRecord record
Task
Invocado después de que un registro se haya asociado con otro disco a través de una relación de muchos a muchos. Útil para actualizar agregados relacionados, emitiendo eventos de dominio, o manteniendo la integridad referencial.
OnAfterCreateAsyncTableRecord record
Task
Invocado inmediatamente después de que se haya creado un nuevo registro. Úsalo para acciones posteriores a la creación como registros, notificaciones, o activar flujos de trabajo posteriores.
OnAfterDeleteAsyncTableRecordReference record
Task
Invocado después de que un registro haya sido eliminado. Útil para tareas de limpieza, registro de auditorías o cascada de eventos de dominio.
OnAfterDisassociateAsyncTableRecord record
Task
Invocado después de que un registro haya sido disociado de otro récord. Útil para limpiar, actualizar agregados, o desencadenar procesos de seguimiento.
OnAfterUpdateAsyncTableRecord record
Task
Invocado después de que se haya actualizado un registro existente. Útil para registro de auditorías, invalidación de caché o disparos Procesos de seguimiento.
OnBeforeAssociateAsyncTableRecord record
Task
Invocado antes de que un registro esté asociado con otro Graba a través de una relación de muchos a muchos. Usa esto para validar la asociación, hacer cumplir normas de relaciones, o evitar enlaces inválidos.
OnBeforeCreateAsyncTableRecord record
Task
Invocado inmediatamente antes de que se cree un nuevo registro. Utiliza esto para validar, mutar o preparar el registro antes de la persistencia.
OnBeforeDeleteAsyncTableRecordReference record
Task
Invocado antes de que se elimine un registro. Utiliza esto para hacer cumplir las reglas de borrado, realizar conversiones de eliminación suave, o bloquear la eliminación bajo ciertas condiciones.
OnBeforeDisassociateAsyncTableRecord record
Task
Invocado antes de que un registro se disocie de otro Registro. Usa esto para validar la disociación, hacer cumplir restricciones, o eliminación de bloqueos de relaciones requeridas.
OnBeforeUpdateAsyncTableRecord record
Task
Invocado antes de que se actualice un registro existente. Úsalo para validar cambios, hacer cumplir reglas de negocio o modificar el registro anterior a la actualización se mantuvo.
Nombre: OnAfterAssociateAsync
Parámetros: TableRecord record
Tipo: Task
Descripción: Invocado después de que un registro se haya asociado con otro disco a través de una relación de muchos a muchos. Útil para actualizar agregados relacionados, emitiendo eventos de dominio, o manteniendo la integridad referencial.
Nombre: OnAfterCreateAsync
Parámetros: TableRecord record
Tipo: Task
Descripción: Invocado inmediatamente después de que se haya creado un nuevo registro. Úsalo para acciones posteriores a la creación como registros, notificaciones, o activar flujos de trabajo posteriores.
Nombre: OnAfterDeleteAsync
Parámetros: TableRecordReference record
Tipo: Task
Descripción: Invocado después de que un registro haya sido eliminado. Útil para tareas de limpieza, registro de auditorías o cascada de eventos de dominio.
Nombre: OnAfterDisassociateAsync
Parámetros: TableRecord record
Tipo: Task
Descripción: Invocado después de que un registro haya sido disociado de otro récord. Útil para limpiar, actualizar agregados, o desencadenar procesos de seguimiento.
Nombre: OnAfterUpdateAsync
Parámetros: TableRecord record
Tipo: Task
Descripción: Invocado después de que se haya actualizado un registro existente. Útil para registro de auditorías, invalidación de caché o disparos Procesos de seguimiento.
Nombre: OnBeforeAssociateAsync
Parámetros: TableRecord record
Tipo: Task
Descripción: Invocado antes de que un registro esté asociado con otro Graba a través de una relación de muchos a muchos. Usa esto para validar la asociación, hacer cumplir normas de relaciones, o evitar enlaces inválidos.
Nombre: OnBeforeCreateAsync
Parámetros: TableRecord record
Tipo: Task
Descripción: Invocado inmediatamente antes de que se cree un nuevo registro. Utiliza esto para validar, mutar o preparar el registro antes de la persistencia.
Nombre: OnBeforeDeleteAsync
Parámetros: TableRecordReference record
Tipo: Task
Descripción: Invocado antes de que se elimine un registro. Utiliza esto para hacer cumplir las reglas de borrado, realizar conversiones de eliminación suave, o bloquear la eliminación bajo ciertas condiciones.
Nombre: OnBeforeDisassociateAsync
Parámetros: TableRecord record
Tipo: Task
Descripción: Invocado antes de que un registro se disocie de otro Registro. Usa esto para validar la disociación, hacer cumplir restricciones, o eliminación de bloqueos de relaciones requeridas.
Nombre: OnBeforeUpdateAsync
Parámetros: TableRecord record
Tipo: Task
Descripción: Invocado antes de que se actualice un registro existente. Úsalo para validar cambios, hacer cumplir reglas de negocio o modificar el registro anterior a la actualización se mantuvo.