我有一个带有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容器来处理当前请求,还是会以一种越界的方式发生?我不确定验证器何时初始化......
答案 0 :(得分:1)
一般来说,验证器将被懒惰地构建(即第一次需要它),然后将保留在您的DI容器中以备将来使用。所以它不会限制在http请求范围内。