C# FluentValidation和实体框架查找
我有一个带有实体框架的ASP.NET MVC应用程序。该应用程序将DbContext的作用域限定为当前HTTP请求,但也考虑带外请求,为每个请求返回一个新的DbContext。我注册了默认的Fluent验证提供程序,如下所示:C# FluentValidation和实体框架查找,c#,.net,entity-framework,fluentvalidation,C#,.net,Entity Framework,Fluentvalidation,我有一个带有实体框架的ASP.NET MVC应用程序。该应用程序将DbContext的作用域限定为当前HTTP请求,但也考虑带外请求,为每个请求返回一个新的DbContext。我注册了默认的Fluent验证提供程序,如下所示: FluentValidationModelValidatorProvider.Configure(); 在构造函数中,我对实体框架有一些依赖性: public class SomeValidator : AbstractValidator<Customer>
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("..");
}
}
公共类SomeValidator:AbstractValidator
{
公共验证程序()
{
private _refService=//通过DI容器获取IReferenceDataService
Dim refID=\u refService.GetID(要为其查找ID的值的详细信息);
规则((m)=>m.Field)。必须((o,v)=>
{
如果(v==reID)
返回false;
其他的
...
}).带有信息(“…”);
}
}
调用refID返回一个值将使用实体框架访问数据库。构造函数是否在HTTP请求期间运行,从而对当前请求使用缓存的EF容器,还是会以越界方式发生?我不确定验证器何时被初始化…一般来说,验证器将被延迟构造(即您第一次需要它时),然后将保留在您的DI容器中供将来使用。因此,它的作用域不会局限于http请求