Невозможно разрешить IDbContext при активации службы - PullRequest
0 голосов
/ 29 мая 2020

Работая в 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, на мой взгляд.

Заранее спасибо!

1 Ответ

0 голосов
/ 30 мая 2020

Для будущих ссылок: решение действительно заключалось в том, чтобы добавить

AddScoped<IDbContext, DbContext>()

Должно быть что-то еще, что нарушило мой контекст

...