2
: 나는 FluentValidation에 엔티티 프레임 워크 컨텍스트를 주입내가하는 ASP.NET 핵심 응용 프로그램의 시작에 다음과 같은 한
services.AddDbContext<Context>(x => x.UseSqlServer(connectionString));
services.AddFluentValidation(x => x.RegisterValidatorsFromAssemblyContaining<Startup>());
검증 :
public class TestModelValidator : AbstractValidator<TestModel> {
public TestModelValidator(Context context) {
}
}
나는 다음과 같은 오류 얻을 :
ObjectDisposedException: Cannot access a disposed object. A common cause of this error is disposing a context that was resolved from dependency injection and then later trying to use the same context instance elsewhere in your application. This may occur is you are calling Dispose() on the context, or wrapping the context in a using statement. If you are using dependency injection, you should let the dependency injection container take care of disposing context instances.
Object name: Context
내가 무엇을 놓치고를?
의견에서 언급 한 바와 같이
'AddFluentValidation'은 (는) 싱글 톤으로 등록합니까? 기본 설정은 'DbContext'이 범위의 서비스로 등록되고 각 요청 후 배치받을 – Tseng
예, 유창 검증이 싱글로 추가 (상태를 추적 DbContext하여 메모리 누수를 방지하기 위해) 때문이다 때문에, 싱글에 DbContext를 삽입 할 수 없습니다. 하지만 Func을 주입하려고 시도한 결과 같은 오류가 발생했습니다. 해야합니까? –
어떻게'Func'을 등록하셨습니까? 올바르게 등록 된 경우 팩토리 메서드가 실제로 작동해야합니다. –
Tseng