Im Rahmen einer datenorientierten Anwendung verwendet, die eine Datenbank:Welche Art von Validierungen mit FluentValidations?
ich FluentValidations
nur wurde mit Dingen wie zu bestätigen, dass eine Id war eine positive Zahl ist, oder, dass ein Argument ist nicht null
: Dinge, die hat die Datenbank nicht getroffen.
Aber nach einiger Zeit, fragte ich mich, warum würde ich nicht Dinge validieren, die tatsächlich Abfrage der Datenbank. So entschied ich mich, weiter zu validieren und jetzt, Validator
validiert nicht nur, dass die angegebene Id eine positive Zahl ist, sondern auch, dass die Entität existiert.
Ist dies das Ziel eines Validators. Misse ich es falsch? Sollte ein Validator auch komplexe Geschäftsregeln prüfen?
Danke! Was ist die allgemeine Faustregel? Ich mache eine Web-API und die Validatoren agieren gegen jede Anfrage. Vielleicht kann ein Validator in diesem Aspekt gängige Dinge wie eine GetById abfangen, wo die ID nicht gefunden wird. Aber ist es sinnvoll, eine komplexe Bedingung zu validieren, die die Anforderung gemäß den Geschäftsregeln erfüllen sollte? Oder sollte ich die Validierung in einer niedrigeren Schicht durchführen und nur eine entsprechende Ausnahme auslösen, wenn die Bedingung nicht erfüllt ist? – SuperJMN
Es hängt von Ihren Anforderungen ab. Ich denke, es ist sinnvoll, eine grundlegende Validierung in Ihren Controllern durchzuführen (Sie können versuchen, FluentValidation in die integrierte Pipeline zu integrieren und ModelState oder holet validator selbst zu verwenden und manuell Validate aufzurufen) und 400 im Fehlerfall zurückgeben. Aber für komplexere, Domänen- und DB-bezogene Validierungen sollten Sie Ihre Entität besser in einer niedrigeren Ebene validieren (ich hoffe, Sie haben einen Service, ein Repository oder einen Befehls-Handler). Es kann auch manuell oder mit Dekorator/Interceptor erfolgen. Um einen Fehler anzuzeigen, können Sie eine Ausnahme auslösen oder ein Validierungsergebnis zurückgeben –