C# 依赖注入未解析继承的服务(DbContext)

C# 依赖注入未解析继承的服务(DbContext),c#,asp.net-core,.net-core,dependency-injection,C#,Asp.net Core,.net Core,Dependency Injection,我正在尝试注册我拥有的两个DBContext中的一个,基于我传递的一个开关,这意味着我是否想要为数据库种子或只是运行服务。因此,我在ConfigureServices上执行以下操作: //Add DB Service for application bool seedDb = Configuration.GetValue<bool>("seeddb"); if(seedDb) services.AddDbContext<ApplicationDbSeedDataCon

我正在尝试注册我拥有的两个DBContext中的一个,基于我传递的一个开关,这意味着我是否想要为数据库种子或只是运行服务。因此,我在ConfigureServices上执行以下操作:

//Add DB Service for application
bool seedDb = Configuration.GetValue<bool>("seeddb");

if(seedDb)
    services.AddDbContext<ApplicationDbSeedDataContext>(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));
else
    services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));
这不是应该正确解决吗?

用这个

services.AddDbContext<ApplicationDbSeedDataContext>(...);

这样说,尽量避免在代码< >代码>启动/代码>之外注入和使用<代码>图标> <代码>,它实际上不是这个意思,在大多数情况下可以被看作是代码气味(SRP违例),考虑使用选项模式

这个

services.AddDbContext<ApplicationDbSeedDataContext>(...);

这样说,尽量避免注入和使用<代码> ICOFIGATION/<代码>代码外>启动>代码>它并不是真正意义上的,在大多数情况下都可以被看作是代码气味(SRP违例)考虑使用选项模式

<代码> Apple。code>ApplicationDbContext,为什么不同时注入两者?
applicationdbeeddatacontext
!=
ApplicationDbContext
,为什么不同时注入这两个呢?确切地说,在发布解决方案之前,我们正在测试这一点。没有注意到不同的重载。但我还是不能让它工作。我收到以下错误:System.InvalidOperationException:验证服务描述符“ServiceType:WebAPI.Context.ApplicationDbContext生存期:作用域实现类型:WebAPI.Context.ApplicationDBeedDataContext”时出错:无法解析类型“Microsoft.EntityFrameworkCore.DbContextOptions”1的服务[WebAPI.Context.ApplicationDbContext]'试图激活'WebAPI.Contexts.ApplicationDbSeedDataContext'时。这一次我没有主意了。我只是添加了它们OK,只是修复了它。没有休息的时间太多了。谢谢!@很高兴你找到了它。Happy coding确切地说,就是在你发布解决方案之前测试了它。确实错过了不同的重载。但我仍然不能使其正常工作。我收到以下错误:System.InvalidOperationException:验证服务描述符“ServiceType:WebAPI.Contexts.ApplicationOnDBContext生存期:作用域实现类型:WebAPI.Contexts.ApplicationOnDBSeedDataContext”:无法解析类型“Microsoft.EntityFrameworkCore.DbContextOptions”1的服务[WebAPI.Contexts.ApplicationDbContext]'试图激活“WebAPI.Contexts.applicationdbeeddatacontext”。这次我没有主意了。我只是添加了它们OK,只是修复了它。没有休息的时间太多了。谢谢!@很高兴你找到了它。编码愉快
services.AddDbContext<ApplicationDbSeedDataContext>(...);
//Add DB Service for application
bool seedDb = Configuration.GetValue<bool>("seeddb");

if(seedDb)
    services.AddDbContext<ApplicationDbContext, ApplicationDbSeedDataContext>(options => ...);
else
    services.AddDbContext<ApplicationDbContext>(options => ...);