Weitzhandler.FluentValidaiton.EntityFrameworkCore
0.3.1
See the version list below for details.
dotnet add package Weitzhandler.FluentValidaiton.EntityFrameworkCore --version 0.3.1
NuGet\Install-Package Weitzhandler.FluentValidaiton.EntityFrameworkCore -Version 0.3.1
<PackageReference Include="Weitzhandler.FluentValidaiton.EntityFrameworkCore" Version="0.3.1" />
<PackageVersion Include="Weitzhandler.FluentValidaiton.EntityFrameworkCore" Version="0.3.1" />
<PackageReference Include="Weitzhandler.FluentValidaiton.EntityFrameworkCore" />
paket add Weitzhandler.FluentValidaiton.EntityFrameworkCore --version 0.3.1
#r "nuget: Weitzhandler.FluentValidaiton.EntityFrameworkCore, 0.3.1"
#:package Weitzhandler.FluentValidaiton.EntityFrameworkCore@0.3.1
#addin nuget:?package=Weitzhandler.FluentValidaiton.EntityFrameworkCore&version=0.3.1
#tool nuget:?package=Weitzhandler.FluentValidaiton.EntityFrameworkCore&version=0.3.1
FluentValidation.EntityFrameworkCore
Loads EF Core column configuration from matching FluentValidation validators registered in assembly.
Usage:
Install the Weitzhandler.FluentValidation.EntityFrameworkCore package, and set up FluentValidation.DependencyInjection to register all validators:
services
.AddDbContext<EntityContext>(options => ...)
.AddValidatorsFromAssemblyContaining<EntityValidator>();
Then, in your DbContext's OnModelCreating method, call modelBuilder.ApplyConfigurationFromFluentValdations(serviceProvider):
public class EntityContext : DbContext
{
private readonly IServiceProvider serviceProvider;
public EntityContext(DbContextOptions<EntityContext> options, IServiceProvider serviceProvider)
: base(options)
{
this.serviceProvider = serviceProvider;
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfigurationFromFluentValidations(serviceProvider);
}
}
Alternatively, call AddFluentValidation on the IServiceCollection, optionally providing validator discovery assemblies, then have your DbContext take a dependency on IValidatorFactory:
public class EntityContext : DbContext
{
private readonly IValidatorFactory validatorFactory;
public EntityContext(DbContextOptions<EntityContext> options, IValidatorFactory validatorFactory)
: base(options)
{
this.validatorFactory = validatorFactory;
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfigurationFromFluentValidations(validatorFactory);
}
}
Note: we need a reference to the service provider so that we obtain the registered IValidator<>s from it.
The following validators are currently supported:
INotNullValidator/INotEmptyValidator(e.g.RuleFor(entity => entity.Property.NotNull()))
Annotates the Db column as not-nullable (e.g.Column (nvarchar(MAX), not null)ILengthValidator(e.g.RuleFor(entity => entity.Property.MaximumLength(m)))
Annotates the Db column with a max length annotation (e.g.varchar(m)).ExactLengthValidator
Annotates the Db column with a fixed length annotation (e.g.varchar(f)).ScalePrecisionValidator(RuleFor(entity => entity.Property.ScalePrecision(scale: s, precision: p)))
Annotates the Db column (if decimal) with the precision and scale This is only supported in EF Core 5+
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- FluentValidation.DependencyInjectionExtensions (>= 8.2.2)
- Microsoft.EntityFrameworkCore.Relational (>= 2.1.11 && < 5.0.0)
-
.NETStandard 2.1
- FluentValidation.DependencyInjectionExtensions (>= 8.2.2)
- Microsoft.EntityFrameworkCore.Relational (>= 5.0.0-preview.4.20220.10)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.