Работая в CQRS с MediatR, в Startup я регистрирую DomainEventDispatcher, Repos, Query- и Eventhandlers, а также службы. Репозитории работают с DbContext, как и мои службы. Все CRUD работает до тех пор, пока я не введу свою службу в контроллер, я получаю следующую ошибку: Невозможно разрешить службу для типа «IDbContext» при попытке активировать «Службу».
Мне кажется странным видеть, как я
services.AddDbContext<DbContext>(options =>
{
options.UseLazyLoadingProxies().UseSqlServer(cs);
options.EnableSensitiveDataLogging(true);
});
перед регистрацией следующего:
services
.AddScoped<IDomainEventsDispatcher, DomainEventsDispatcher>()
.AddScoped<IRepo<ToDoItem>, EfCRepo<ToDoItem>>()
.AddMediatR(cfg => cfg.AsScoped(), typeof(ToDoItemsQueryHandler).GetTypeInfo().Assembly)
.AddScoped<INotificationHandler<Event>, EventHandler>()
.AddMediatR(cfg => cfg.AsScoped(), typeof(EventHandler).GetTypeInfo().Assembly);
.AddScoped<IService, Service>()
Когда я пытаюсь AddScoped, IDbContext с
AddScoped<IDbContext, DbContext>()
Мой контекст пуст и больше не может получать объекты из Db .
Мне кажется странным, что мне нужно добавить в AddScoped IDbContext для служб, поскольку Repos также работает с DbContext, без необходимости разрешать службу для типа IDbContext.
I Я просмотрел официальную документацию MediatR и не смог найти ничего о том, как зарегистрировать Сервисы, а поиск в Google «Регистрация сервисов при запуске MediatR» перенаправляет в основном на другие вопросы, поэтому любая помощь / идеи от вас, ребята, более чем приветствуются!
Я задал новый вопрос, так как могу вводить зависимости, но для служб это как-то иначе. Большинство вопросов по S / O, касающихся регистрации в стартапе, более общие c, на мой взгляд.
Заранее спасибо!