激活服务时无法解析IDbContext

问题描述 投票:0回答:1

使用MediatR在CQRS中工作,在启动时,我注册了DomainEventDispatcher,Repos,查询和事件处理程序以及服务。仓库可以与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>()

[当我尝试使用[]将IDbContext添加到范围时

AddScoped<IDbContext, DbContext>()

我的上下文为空,无法再从Db获取实体。

我感到奇怪的是,我需要为服务的IDbContext添加范围,就像Repos也可以与DbContext一起使用,而无需解析IDbContext类型的服务。

我看过MediatR官方文档,找不到有关如何注册服务的任何信息,并搜索“注册服务MediatR启动”,大部分重定向到其他问题,因此,非常感谢你们的帮助/见解!

我提出了一个新的问题,因为我可以依赖注入,但是对于服务来说似乎有所不同。关于S / O的大多数关于启动注册的问题对我来说更通用。

提前感谢!

c# dependency-injection service cqrs mediatr
1个回答
0
投票
AddScoped<IDbContext, DbContext>()

一定是其他破坏我背景的东西

© www.soinside.com 2019 - 2024. All rights reserved.