Interceptadores

Interceptores permitem que você execute lógica personalizada do lado do servidor antes e depois das operações do Dataverse. Ao implementar a ITableRecordInterceptor interface, você pode se conectar ao ciclo de vida da criação de registros, atualizações, exclusões, associações e dissociações.

Visão geral

Casos de uso comuns para interceptadores incluem:

Nota

Interceptadores rodam no servidor e se aplicam a todas as operações de todas as tabelas. Use a TableRecord.TableName propriedade para filtrar a lógica para tabelas específicas.

Começando

1. Criar um Interceptor

Crie uma classe que implemente ITableRecordInterceptor e forneça implementações para cada método. Devolva Task.CompletedTask qualquer gancho, que não precisar.

2. Registro na Injeção de Dependência

Registre seu interceptador no contêiner DI no arquivo do Program.cs seu projeto:

Como interceptores são resolvidos a partir do contêiner DI, você pode injetar quaisquer serviços necessários por meio da injeção do construtor.

Ganchos do Ciclo de Vida

A interface fornece ganchos antes e depois para cinco tipos de operações:

Criar

OnBeforeCreateAsync e OnAfterCreateAsync correr por aí na criação de novos discos. O gancho antes é ideal para definir valores padrão ou validar campos exigidos.

Atualização

OnBeforeUpdateAsync e OnAfterUpdateAsync correr ao redor de atualizações de registro. Use o gancho antes para impor regras de negócio ou modificar valores antes que sejam mantidos.

Excluir

OnBeforeDeleteAsynce OnAfterDeleteAsync contornar a exclusão de registros. Note que esses ganchos recebem um TableRecordReference (nome da tabela e ID) em vez de um .TableRecord

Associado e Dissociado

OnBeforeAssociateAsync / OnAfterAssociateAsync e OnBeforeDisassociateAsync / OnAfterDisassociateAsync funcionam quando relacionamentos muitos-para-muitos são criados ou removidos.

Serviços de Injeção

Como interceptores são registrados no contêiner DI, você pode injetar serviços via injeção de construtor. Isso é útil para acessar estados de autenticação, registro ou outros serviços de aplicação.

Referência API

ITableRecordInterceptor Interface

Métodos

Nome
Parâmetros
Tipo
Descrição
OnAfterAssociateAsyncTableRecord record
Task
Invocado após um registro ter sido associado a outro disco via um relacionamento muitos-para-muitos. Útil para atualizar agregados relacionados, emitindo eventos de domínio, ou mantendo integridade referencial.
OnAfterCreateAsyncTableRecord record
Task
Invocado imediatamente após a criação de um novo registro. Use isso para ações pós-criação, como logar, notificações, ou desencadear fluxos de trabalho posteriores.
OnAfterDeleteAsyncTableRecordReference record
Task
Invocado após um registro ser excluído. Útil para tarefas de limpeza, registros de auditoria ou cascata de eventos de domínio.
OnAfterDisassociateAsyncTableRecord record
Task
Invocado após um registro ter sido dissociado de outro recorde. Útil para limpeza, atualização de agregados, ou desencadear processos de acompanhamento.
OnAfterUpdateAsyncTableRecord record
Task
Invocado após um registro existente ter sido atualizado. Útil para registro de auditoria, invalidação de cache ou disparo Processos de acompanhamento.
OnBeforeAssociateAsyncTableRecord record
Task
Invocado antes que um registro seja associado a outro Registro por meio de um relacionamento muitos-para-muitos. Use isso para validar a associação, fazer cumprir regras de relacionamento, ou evitar links inválidos.
OnBeforeCreateAsyncTableRecord record
Task
Invocado imediatamente antes de um novo registro ser criado. Use isso para validar, mutar ou preparar o registro antes da persistência.
OnBeforeDeleteAsyncTableRecordReference record
Task
Invocado antes que um registro seja excluído. Use isso para impor regras de exclusão, realizar conversões de deleção suave, ou bloquear a exclusão sob certas condições.
OnBeforeDisassociateAsyncTableRecord record
Task
Invocado antes que um registro seja dissociado de outro Recorde. Use isso para validar a dissociação, fazer cumprir restrições, ou remoção de bloqueios de relações necessárias.
OnBeforeUpdateAsyncTableRecord record
Task
Invocado antes que um registro existente seja atualizado. Use isso para validar alterações, aplicar regras de negócio ou modificar o registro antes da atualização ser mantido.
Nome: OnAfterAssociateAsync
Parâmetros: TableRecord record
Tipo: Task
Descrição: Invocado após um registro ter sido associado a outro disco via um relacionamento muitos-para-muitos. Útil para atualizar agregados relacionados, emitindo eventos de domínio, ou mantendo integridade referencial.
Nome: OnAfterCreateAsync
Parâmetros: TableRecord record
Tipo: Task
Descrição: Invocado imediatamente após a criação de um novo registro. Use isso para ações pós-criação, como logar, notificações, ou desencadear fluxos de trabalho posteriores.
Nome: OnAfterDeleteAsync
Parâmetros: TableRecordReference record
Tipo: Task
Descrição: Invocado após um registro ser excluído. Útil para tarefas de limpeza, registros de auditoria ou cascata de eventos de domínio.
Nome: OnAfterDisassociateAsync
Parâmetros: TableRecord record
Tipo: Task
Descrição: Invocado após um registro ter sido dissociado de outro recorde. Útil para limpeza, atualização de agregados, ou desencadear processos de acompanhamento.
Nome: OnAfterUpdateAsync
Parâmetros: TableRecord record
Tipo: Task
Descrição: Invocado após um registro existente ter sido atualizado. Útil para registro de auditoria, invalidação de cache ou disparo Processos de acompanhamento.
Nome: OnBeforeAssociateAsync
Parâmetros: TableRecord record
Tipo: Task
Descrição: Invocado antes que um registro seja associado a outro Registro por meio de um relacionamento muitos-para-muitos. Use isso para validar a associação, fazer cumprir regras de relacionamento, ou evitar links inválidos.
Nome: OnBeforeCreateAsync
Parâmetros: TableRecord record
Tipo: Task
Descrição: Invocado imediatamente antes de um novo registro ser criado. Use isso para validar, mutar ou preparar o registro antes da persistência.
Nome: OnBeforeDeleteAsync
Parâmetros: TableRecordReference record
Tipo: Task
Descrição: Invocado antes que um registro seja excluído. Use isso para impor regras de exclusão, realizar conversões de deleção suave, ou bloquear a exclusão sob certas condições.
Nome: OnBeforeDisassociateAsync
Parâmetros: TableRecord record
Tipo: Task
Descrição: Invocado antes que um registro seja dissociado de outro Recorde. Use isso para validar a dissociação, fazer cumprir restrições, ou remoção de bloqueios de relações necessárias.
Nome: OnBeforeUpdateAsync
Parâmetros: TableRecord record
Tipo: Task
Descrição: Invocado antes que um registro existente seja atualizado. Use isso para validar alterações, aplicar regras de negócio ou modificar o registro antes da atualização ser mantido.