FluentValidation 和实体框架查找

Posted

技术标签:

【中文标题】FluentValidation 和实体框架查找【英文标题】:FluentValidation and Entity Framework Lookups 【发布时间】:2015-06-16 20:16:19 【问题描述】:

我有一个带有实体框架的 ASP.NET MVC 应用程序。此应用程序将 DbContext 范围限定为当前 HTTP 请求,但也考虑带外请求,为每个请求返回一个新的 DbContext。我注册了默认的 Fluent 验证提供程序,如下所示:

FluentValidationModelValidatorProvider.Configure();

在构造函数中,我对实体框架有一些依赖:

public class SomeValidator : AbstractValidator<Customer>

   public SomeValidator()
   
     private _refService = //Get IReferenceDataService through DI container
     Dim refID = _refService.GetID(details of value to find ID for);

       RuleFor((m) => m.Field).Must((o, v) =>
            
                if (v == reID)
                  return false;
                else
                    ...
            ).WithMessage("..");
   

将值返回给 refID 的调用使用 Entity Framework 命中数据库。构造函数是否在 HTTP 请求期间运行,从而将我缓存的 EF 容器用于当前请求,还是会以越界方式发生?我不确定验证器何时被初始化...

【问题讨论】:

【参考方案1】:

一般来说,验证器将被延迟构建(即您第一次需要它时),然后将保留在您的 DI 容器中以供将来使用。所以它不会局限于 http 请求。

【讨论】:

以上是关于FluentValidation 和实体框架查找的主要内容,如果未能解决你的问题,请参考以下文章

.NET6之MiniAPI(二十):实体验证FluentValidation

模型验证组件 FluentValidation

模型验证组件 FluentValidation

FluentValidation:一个非常受欢迎的,用于构建强类型验证规则的.NET 库

实体框架查找与位置

FluentValidation在C#中是怎么进行数据验证的