Weitzhandler.FluentValidaiton.EntityFrameworkCore
0.3.2
See the version list below for details.
dotnet add package Weitzhandler.FluentValidaiton.EntityFrameworkCore --version 0.3.2
NuGet\Install-Package Weitzhandler.FluentValidaiton.EntityFrameworkCore -Version 0.3.2
<PackageReference Include="Weitzhandler.FluentValidaiton.EntityFrameworkCore" Version="0.3.2" />
paket add Weitzhandler.FluentValidaiton.EntityFrameworkCore --version 0.3.2
#r "nuget: Weitzhandler.FluentValidaiton.EntityFrameworkCore, 0.3.2"
// Install Weitzhandler.FluentValidaiton.EntityFrameworkCore as a Cake Addin #addin nuget:?package=Weitzhandler.FluentValidaiton.EntityFrameworkCore&version=0.3.2 // Install Weitzhandler.FluentValidaiton.EntityFrameworkCore as a Cake Tool #tool nuget:?package=Weitzhandler.FluentValidaiton.EntityFrameworkCore&version=0.3.2
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+
Release notes
0.3.2
Bug fix
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. |
.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.