FluentValidation and Entity Framework Lookups

本文关键字:Lookups Framework Entity and FluentValidation | 更新日期: 2023-09-27 17:56:49

我有一个带有实体框架的 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 的调用将使用实体框架命中数据库。 构造函数是在 HTTP 请求期间运行,从而将缓存的 EF 容器用于当前请求,还是以越界方式发生? 我不确定验证器何时初始化...

FluentValidation and Entity Framework Lookups

一般来说,验证器将被延迟构造(即第一次需要它时),然后保留在您的 DI 容器中以备将来使用。因此,它不会限定为 http 请求。