Abfangjäger

Interceptoren ermöglichen es, benutzerdefinierte serverseitige Logik vor und nach Dataverse-Operationen auszuführen. Durch die Implementierung der Schnittstelle ITableRecordInterceptor können Sie sich in den Lebenszyklus der Datensatzerstellung, Aktualisierungen, Löschungen, Assoziationen und Disoziationen einbinden.

Überblick

Häufige Anwendungsfälle für Abfangjäger sind:

Anmerkung

Interceptoren laufen auf dem Server und werden auf alle Operationen für alle Tabellen angewendet. Verwenden Sie die Eigenschaft TableRecord.TableName , um die Logik auf bestimmte Tabellen zu filtern.

Anfang

1. Einen Abfangfanger erstellen

Erstelle eine Klasse, die implementiert ITableRecordInterceptor und implementiert für jede Methode. Gib alle Haken zurück, Task.CompletedTask die du nicht brauchst.

2. Registrieren in der Abhängigkeitsinjektion

Registrieren Sie Ihren Abfanggerät im DI-Container in der Program.cs Datei Ihres Projekts:

Da Interceptoren aus dem DI-Container aufgelöst werden, kannst du alle erforderlichen Dienste per Konstruktor-Injektion injizieren.

Lebenszyklus-Hooks

Die Schnittstelle bietet Vorher-Nachher-Haken für fünf Arten von Operationen:

Erstellen Sie

OnBeforeCreateAsync und herumlaufen mit OnAfterCreateAsync neuer Plattenerstellung. Der Vorher-Hook ist ideal, um Standardwerte festzulegen oder erforderliche Felder zu validieren.

Update

OnBeforeUpdateAsync Und herumlaufen und OnAfterUpdateAsync Updates aufzeichnen. Verwenden Sie den Vorher-Hook, um Geschäftsregeln zu erzwingen oder Werte zu ändern, bevor sie gespeichert werden.

Löschen

OnBeforeDeleteAsyncOnAfterDeleteAsync und die Löschung von Datensätzen umgehen. Beachten Sie, dass diese Hooks eine TableRecordReference (Tabellenname und -ID) erhalten statt eines vollständigen TableRecord.

Associate & Dissociation

OnBeforeAssociateAsync / OnAfterAssociateAsync und OnBeforeDisassociateAsync / OnAfterDisassociateAsync laufen, wenn viele-zu-viele-Beziehungen geschaffen oder entfernt werden.

Injektionsdienste

Da Interceptoren im DI-Container registriert sind, kannst du Dienste über Konstruktor-Injektion injizieren. Dies ist nützlich, um auf Authentifizierungsstatus, Protokollierung oder andere Anwendungsdienste zuzugreifen.

API-Referenz

ITableRecordInterceptor Interface

Methoden

Name
Parameter
Typ
Beschreibung
OnAfterAssociateAsyncTableRecord record
Task
Berufen, nachdem ein Datensatz zugeordnet wurde mit ein weiterer Rekord durch eine viele-zu-viele-Beziehung. Nützlich zur Aktualisierung verwandter Aggregate, Domänenereignisse aussenden oder die referenzielle Integrität aufrechterhalten.
OnAfterCreateAsyncTableRecord record
Task
Sofort nach der Erstellung eines neuen Datensatzes aktiviert. Verwenden Sie dies für Nachbearbeitungsmaßnahmen wie Protokollierung, Benachrichtigungen, Oder es löst nachgelagerte Arbeitsabläufe aus.
OnAfterDeleteAsyncTableRecordReference record
Task
Wird aufgerufen, nachdem ein Datensatz gelöscht wurde. Nützlich für Bereinigungsaufgaben, Audit-Logging oder Kaskaden-Domain-Events.
OnAfterDisassociateAsyncTableRecord record
Task
Berufen, nachdem ein Datensatz getrennt wurde Noch ein Rekord. Nützlich für Aufräumen, Aktualisierung von Aggregaten, oder Folgeprozesse auslösen.
OnAfterUpdateAsyncTableRecord record
Task
Wird aufgerufen, nachdem ein bestehender Datensatz aktualisiert wurde. Nützlich für Audit-Logging, Cache-Invalidierung oder Auslösung Nachverfolgungsprozesse.
OnBeforeAssociateAsyncTableRecord record
Task
Aufgerufen, bevor ein Datensatz mit einem anderen verknüpft wird Zeichnen Sie über eine viele-zu-viele-Beziehung auf. Nutzen Sie dies, um die Verbindung zu validieren, durchzusetzen Beziehungsregeln oder ungültige Links verhindern.
OnBeforeCreateAsyncTableRecord record
Task
Wird unmittelbar vor der Erstellung eines neuen Datensatzes aufgerufen. Nutzen Sie dies, um den Datensatz vor dem Persistenz zu validieren, zu mutieren oder vorzubereiten.
OnBeforeDeleteAsyncTableRecordReference record
Task
Wird aufgerufen, bevor ein Datensatz gelöscht wird. Nutzen Sie dies, um Löschregeln durchzusetzen, Soft-Delete-Konvertierungen durchzuführen, oder Blocklöschung unter bestimmten Bedingungen.
OnBeforeDisassociateAsyncTableRecord record
Task
Aufgerufen, bevor ein Datensatz von einem anderen getrennt wird Aufzeichnung. Nutze das, um die Dissoziation zu validieren, durchzusetzen Einschränkungen oder blockieren die Entfernung erforderlicher Beziehungen.
OnBeforeUpdateAsyncTableRecord record
Task
Wird aufgerufen, bevor ein bestehender Datensatz aktualisiert wird. Nutzen Sie dies, um Änderungen zu validieren, Geschäftsregeln durchzusetzen oder zu modifizieren der Datensatz vor dem Update wurde aufrechterhalten.
Name: OnAfterAssociateAsync
Parameter: TableRecord record
Typ: Task
Beschreibung: Berufen, nachdem ein Datensatz zugeordnet wurde mit ein weiterer Rekord durch eine viele-zu-viele-Beziehung. Nützlich zur Aktualisierung verwandter Aggregate, Domänenereignisse aussenden oder die referenzielle Integrität aufrechterhalten.
Name: OnAfterCreateAsync
Parameter: TableRecord record
Typ: Task
Beschreibung: Sofort nach der Erstellung eines neuen Datensatzes aktiviert. Verwenden Sie dies für Nachbearbeitungsmaßnahmen wie Protokollierung, Benachrichtigungen, Oder es löst nachgelagerte Arbeitsabläufe aus.
Name: OnAfterDeleteAsync
Parameter: TableRecordReference record
Typ: Task
Beschreibung: Wird aufgerufen, nachdem ein Datensatz gelöscht wurde. Nützlich für Bereinigungsaufgaben, Audit-Logging oder Kaskaden-Domain-Events.
Name: OnAfterDisassociateAsync
Parameter: TableRecord record
Typ: Task
Beschreibung: Berufen, nachdem ein Datensatz getrennt wurde Noch ein Rekord. Nützlich für Aufräumen, Aktualisierung von Aggregaten, oder Folgeprozesse auslösen.
Name: OnAfterUpdateAsync
Parameter: TableRecord record
Typ: Task
Beschreibung: Wird aufgerufen, nachdem ein bestehender Datensatz aktualisiert wurde. Nützlich für Audit-Logging, Cache-Invalidierung oder Auslösung Nachverfolgungsprozesse.
Name: OnBeforeAssociateAsync
Parameter: TableRecord record
Typ: Task
Beschreibung: Aufgerufen, bevor ein Datensatz mit einem anderen verknüpft wird Zeichnen Sie über eine viele-zu-viele-Beziehung auf. Nutzen Sie dies, um die Verbindung zu validieren, durchzusetzen Beziehungsregeln oder ungültige Links verhindern.
Name: OnBeforeCreateAsync
Parameter: TableRecord record
Typ: Task
Beschreibung: Wird unmittelbar vor der Erstellung eines neuen Datensatzes aufgerufen. Nutzen Sie dies, um den Datensatz vor dem Persistenz zu validieren, zu mutieren oder vorzubereiten.
Name: OnBeforeDeleteAsync
Parameter: TableRecordReference record
Typ: Task
Beschreibung: Wird aufgerufen, bevor ein Datensatz gelöscht wird. Nutzen Sie dies, um Löschregeln durchzusetzen, Soft-Delete-Konvertierungen durchzuführen, oder Blocklöschung unter bestimmten Bedingungen.
Name: OnBeforeDisassociateAsync
Parameter: TableRecord record
Typ: Task
Beschreibung: Aufgerufen, bevor ein Datensatz von einem anderen getrennt wird Aufzeichnung. Nutze das, um die Dissoziation zu validieren, durchzusetzen Einschränkungen oder blockieren die Entfernung erforderlicher Beziehungen.
Name: OnBeforeUpdateAsync
Parameter: TableRecord record
Typ: Task
Beschreibung: Wird aufgerufen, bevor ein bestehender Datensatz aktualisiert wird. Nutzen Sie dies, um Änderungen zu validieren, Geschäftsregeln durchzusetzen oder zu modifizieren der Datensatz vor dem Update wurde aufrechterhalten.