Was ist FluentValidation und wozu wird es benötigt?
\n\nFluentValidation ist eine beliebte Bibliothek für .NET, die für die Erstellung strenger und lesbarer Validierungsregeln für Geschäftsobjekte entwickelt wurde. Im Gegensatz zu den integrierten Validierungsattributen (Data Annotations) bietet FluentValidation einen Ansatz, der auf der Trennung von Validierungslogik und Datenmodell basiert. Dies macht den Code sauberer, testbarer und flexibler.
\n\nDie Bibliothek verwendet eine "fließende Schnittstelle" (Fluent Interface), die es ermöglicht, Validierungsregelketten mit Punktnotation zu erstellen. FluentValidation unterstützt komplexe Szenarien: kaskadierende Validierungen, bedingte Regeln, benutzerdefinierte Validatoren, die Arbeit mit Listen und verschachtelten Objekten.
\n\nWozu wird FluentValidation benötigt?
\n- \n
- Trennung der Verantwortlichkeiten: Validierungsregeln verunreinigen das Datenmodell nicht. \n
- Lesbarkeit: Regelketten sind leicht zu lesen und zu warten. \n
- Flexibilität: Einfache Erstellung komplexer, bedingter und zusammengesetzter Regeln. \n
- Testbarkeit: Validatoren können wie normale Klassen getestet werden. \n
- Integration: Hervorragende Integration mit ASP.NET Core, MVC, Web API und anderen Frameworks. \n
Installation von FluentValidation
\n\nDie Installation der Bibliothek erfolgt über den NuGet-Paketmanager. Führen Sie einen der folgenden Befehle in der Paket-Manager-Konsole oder im .NET CLI-Terminal aus:
\n\n// Installation über die Paket-Manager-Konsole\nInstall-Package FluentValidation\n\n// Installation über .NET CLI\ndotnet add package FluentValidation\n\nFür die Integration mit ASP.NET Core wird zusätzlich das folgende Paket benötigt:
\n\ndotnet add package FluentValidation.AspNetCore\n\nSchnellstart: Codebeispiel
\n\nAngenommen, wir haben ein Benutzermodell:
\n\npublic class User\n{\n public int Id { get; set; }\n public string Name { get; set; }\n public string Email { get; set; }\n public int Age { get; set; }\n public string Password { get; set; }\n public string ConfirmPassword { get; set; }\n}\n\nWir erstellen einen Validator, indem wir von AbstractValidator<User> erben:
using FluentValidation;\n\npublic class UserValidator : AbstractValidator<User>\n{\n public UserValidator()\n {\n RuleFor(user => user.Name)\n .NotEmpty().WithMessage("Name ist erforderlich")\n .Length(2, 50).WithMessage("Name muss zwischen 2 und 50 Zeichen lang sein");\n\n RuleFor(user => user.Email)\n .NotEmpty().WithMessage("E-Mail ist erforderlich")\n .EmailAddress().WithMessage("Ungültiges E-Mail-Format");\n\n RuleFor(user => user.Age)\n .InclusiveBetween(18, 120).WithMessage("Alter muss zwischen 18 und 120 Jahren liegen");\n\n RuleFor(user => user.Password)\n .NotEmpty().WithMessage("Passwort ist erforderlich")\n .MinimumLength(6).WithMessage("Passwort muss mindestens 6 Zeichen enthalten");\n\n RuleFor(user => user.ConfirmPassword)\n .Equal(user => user.Password).WithMessage("Passwörter stimmen nicht überein");\n }\n}\n\nVerwendung des Validators:
\n\nvar validator = new UserValidator();\nvar user = new User\n{\n Name = "A",\n Email = "invalid-email",\n Age = 15,\n Password = "123",\n ConfirmPassword = "456"\n};\n\nvar result = validator.Validate(user);\n\nif (!result.IsValid)\n{\n foreach (var error in result.Errors)\n {\n Console.WriteLine($"Eigenschaft: {error.PropertyName}, Fehler: {error.ErrorMessage}");\n }\n}\n\nWichtige Methoden von FluentValidation
\n\nNachfolgend werden die wichtigsten Methoden der Bibliothek mit detaillierter Beschreibung und Beispielen vorgestellt.
\n\n1. RuleFor()
\nWas es tut: Definiert eine Validierungsregel für eine bestimmte Eigenschaft eines Objekts. Dies ist die Hauptmethode, mit der alles beginnt.