У меня есть следующие на запуск приложения ASP.NET Core:Получение «Не удается получить доступ к объекту», расположенную при использовании FV и EF в ASP.NET Ядра
services.AddDbContext<Context>(x => x.UseSqlServer(connectionString));
services.AddFluentValidation(x => x.RegisterValidatorsFromAssemblyContaining<Startup>());
Когда я впрыснуть Entity Framework контекст на FluentValidation валидатор:
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' как singleton? Вы не можете вводить DbContext в одиночные игры, потому что по умолчанию настройки - это то, что 'DbContext' зарегистрирован как служба с ограниченным доступом и получает доступ после каждого запроса (во избежание утечек памяти с помощью DbContext, отслеживающего состояния). – Tseng
Да, плавная проверка добавляется как одиночные. Но я также попытался ввести Func, и я получаю ту же ошибку. Нужно ли мне? –
Как вы зарегистрировали 'Func'? Метод фабрики должен работать на самом деле, если зарегистрирован правильно –
Tseng