Asp.net core 无法创建迁移到3.0后从IdentityDBContext继承的ApplicationDbContext类型的对象
当我尝试在迁移到.net core 3.0和ef core 3.0后添加迁移时,我得到一个错误:无法创建“ApplicationDbContext”类型的对象 依赖项如下所示: 我的代码如下: ApplicationDbContext.csAsp.net core 无法创建迁移到3.0后从IdentityDBContext继承的ApplicationDbContext类型的对象,asp.net-core,entity-framework-core,ef-core-3.0,Asp.net Core,Entity Framework Core,Ef Core 3.0,当我尝试在迁移到.net core 3.0和ef core 3.0后添加迁移时,我得到一个错误:无法创建“ApplicationDbContext”类型的对象 依赖项如下所示: 我的代码如下: ApplicationDbContext.cs public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, ILocalizationDbContext { private readonly I
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, ILocalizationDbContext
{
private readonly IServiceProvider _serviceProvider;
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options,
IServiceProvider serviceProvider)
: base(options)
{
_serviceProvider = serviceProvider;
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection"),
b => b.MigrationsAssembly("Infrastructure")),
ServiceLifetime.Transient);
services.AddDefaultIdentity<ApplicationUser>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
}
public class Program
{
public static void Main(string[] args)
{
var host = Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webHostBuilder =>
{
webHostBuilder
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>();
})
.Build();
host.Run();
}
}
公共类ApplicationDbContext:IdentityDbContext,ILocalizationDbContext
{
私有只读服务器ViceProvider\u服务提供商;
公共应用程序DBContext(DbContextOptions选项)
:基本(选项)
{
}
公共应用程序DBContext(DbContextOptions选项,
IServiceProvider服务提供商)
:基本(选项)
{
_服务提供者=服务提供者;
}
}
Startup.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, ILocalizationDbContext
{
private readonly IServiceProvider _serviceProvider;
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options,
IServiceProvider serviceProvider)
: base(options)
{
_serviceProvider = serviceProvider;
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection"),
b => b.MigrationsAssembly("Infrastructure")),
ServiceLifetime.Transient);
services.AddDefaultIdentity<ApplicationUser>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
}
public class Program
{
public static void Main(string[] args)
{
var host = Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webHostBuilder =>
{
webHostBuilder
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>();
})
.Build();
host.Run();
}
}
public void配置服务(IServiceCollection服务)
{
services.AddDbContext(选项=>
options.UseSqlServer(
Configuration.GetConnectionString(“DefaultConnection”),
b=>b.MigrationsAssembly(“基础架构”),
服务寿命(瞬时);
services.AddDefaultIdentity()
.AddRoles()
.AddEntityFrameworkStores();
}
Program.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, ILocalizationDbContext
{
private readonly IServiceProvider _serviceProvider;
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options,
IServiceProvider serviceProvider)
: base(options)
{
_serviceProvider = serviceProvider;
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection"),
b => b.MigrationsAssembly("Infrastructure")),
ServiceLifetime.Transient);
services.AddDefaultIdentity<ApplicationUser>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
}
public class Program
{
public static void Main(string[] args)
{
var host = Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webHostBuilder =>
{
webHostBuilder
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>();
})
.Build();
host.Run();
}
}
公共类程序
{
公共静态void Main(字符串[]args)
{
var host=host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webHostBuilder=>
{
网络主机生成器
.UseContentRoot(目录.GetCurrentDirectory())
.Useii整合()
.UseStartup();
})
.Build();
host.Run();
}
}
正如错误消息中的链接所述,请更新程序类,使其如下所示
公共类程序
{
公共静态void Main(字符串[]args)
{
var host=CreateHostBuilder(args)
.Build();
host.Run();
}
//EF Core在设计时使用此方法访问DbContext
公共静态IHostBuilder CreateHostBuilder(字符串[]args)
=>Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webHostBuilder=>
{
网络主机生成器
.UseContentRoot(目录.GetCurrentDirectory())
.Useii整合()
.UseStartup();
});
}