FluentValidation v9.0.0 Release Notes

Release Date: 2020-07-06 // almost 4 years ago
  • 🚀 Release notes

    🚀 FluentValidation 9 is a major release and includes several breaking changes. Please read the upgrade guide for full details

    🔄 Changes in 9.0.0

    • ASP.NET core auto-validation can now be completely disabled while preserving clientside integration
    • Types can now be filtered/skipped when auto-registering with the container
    • 🔧 Service lifetime is now configurable when auto-registering with the container

    🔄 Changes in 9.0-preview5

    • ✂ Remove IValidator.Validate(object) overload to improve typesafety (use a context if you need to preserve this behaviour)
    • Replace non-generic ValidationContext class with IValidationContext interface
    • ChildValidatorAdaptor and IncludeRule now require a generic type parameter indicating the root type being validated
    • Expression accessors for comparison properties are now cached where possible
    • {ComparisonProperty} placeholder now passes through the same logic as the {PropertyName} placeholder for consistency

    🔄 Changes in 9.0-preview4

    • {CollectionIndex} placeholder can now be accessed in child validators
    • ➕ Additional ValidationException constructor that allows customising the default message.
    • ScalePrecisionValidator algorithm now more consistent with SQL server (#1356)
    • ➕ Add Icelandic translations of default messages (#1362)
    • ➕ Additional When predicate overload that takes a ValidationContext
    • 🛠 Fixes to range clientside validators when using datetimes (#1371)
    • ⬇️ Drop unsupported .NET Core versions from platform list

    🔄 Changes in 9.0-preview3

    • ASP.NET Core validator provider is now public
    • Ensure ASP.NET Core providers aren't registered twice
    • SoureLink integration
    • ➕ Additional overload of SetValidator that receives property value in callback
    • PropertyRule.ApplySharedCondition is now public
    • ✂ Remove lowercase placeholders from ScalePrecisionValidator

    🔄 Changes in 9.0-preview2

    • Transform can now be used to transform a property value to another type prior to validation occurring
    • ➕ Added WithMessageArgument to test helper extensions
    • ➕ Added Slovenian translations of default error messages.
    • 🛠 Fixes/better handling of the non-generic overloads of AbstractValidator.Validate
    • ✂ Removed the deprecated FluentValidation.Internal.Comparer
    • TrackingCollection has been marked as internal
    • ⚡️ Updated to latest version of Microsoft.NETFramework.ReferenceAssemblies for building net4x targets on non-windows platforms.

    🔄 Changes in 9.0-preview1

    • ✂ Removed support for netstandard1.1, netstandard1.6, net45 (Supported platforms are now netstandard2, net461, netcoreapp2.1, netcoreapp3.0, netcoreapp3.1)
    • ✂ Removed WithLocalizedMessage (WithMessage that takes a callback is the replacement)
    • ✂ Removed ResourceName from ValidationFailure
    • ✂ Removed ResourceName and ResourceType from IStringSource.
    • ✂ Removed SetCollectionValidator which was deprecated in 8.0
    • ➕ Additional overload of OnAnyFailure that can receive a collection of validation failures
    • ✂ Remove DisplayAttribute integration and reference to DataAnnotations.
    • 0️⃣ Default email validation mode now uses the same logic as ASP.NET Core. Previous regex behaviour is opt-in.
    • ComparisonProperty placeholder is now formatted like PropertyName.
    • ✅ TestHelper syntax improvements
    • 0️⃣ Equal/NotEqual now perform ordinal comparisons on string properties by default
    • Severity can be set with a callback
    • 🚚 PropertyValidator.ShouldValidateAsync reanamed to ShouldValidateAsynchronously to remove confusion where the naming suggested this was an async method
    • ✂ Removed various methods from MessageFormatter that were deprecated in 8.x
    • PropertyValidatorContext.Instance renamed to InstanceToValidate for consistency with ValidationContext.
    • ✂ Removed DelegatingValidator which was deprecated in 8.x.

    Downloads

    Binaries can be downloaded from nuget: