FluentValidation和实体框架查找

时间:2015-06-16 20:16:19

标签: c# .net entity-framework fluentvalidation

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

FluentValidationModelValidatorProvider.Configure();

在构造函数中,我对Entity Framework有一些依赖:

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 个答案:

答案 0 :(得分:1)

一般来说,验证器将被懒惰地构建(即第一次需要它),然后将保留在您的DI容器中以备将来使用。所以它不会限制在http请求范围内。