激活服务时无法解析 IDb上下文



在CQRS中使用MediatR,在启动中我注册了DomainEventDispatcher,Repos,Query- and Eventhandlers以及服务。 存储库与 DbContext 一起使用,我的服务也是如此。在我将服务注入控制器之前,一切都有效, 我收到以下错误: 尝试激活"服务"时无法解析类型"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, DbContext>()

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

我觉得很奇怪,我需要为服务添加 IDbContext, 看到存储库也可以与 DbContext 一起使用,而无需解析类型 IDbContext 的服务。

我查看了MediatR官方文档,找不到有关如何注册服务的任何信息, 谷歌搜索"注册服务 MediatR 启动"主要重定向到其他问题, 因此,非常欢迎你们的任何帮助/见解!

我提出了一个新问题,因为我可以注入依赖项,但不知何故,服务似乎有所不同。关于在初创公司注册的大多数关于 S/O 的问题对我来说更通用。

提前感谢!

供将来参考: 解决方案确实是添加

AddScoped<IDbContext, DbContext>()

一定是其他东西打破了我的上下文

最新更新