asp.net-core - 迁移到 3.0 后无法创建继承自 IdentityDBContext 的 ApplicationDbContext 类型的对象
问题描述
当我在迁移到.net core 3.0 和 ef core 3.0后尝试添加迁移时,出现错误:无法创建“ApplicationDbContext”类型的对象。
依赖关系如下:
我的代码如下:
ApplicationDbContext.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;
}
}
启动.cs
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>();
}
程序.cs
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();
}
}
解决方案
正如错误消息中的链接所述,将您的 Program 类更新为如下所示。
public class Program
{
public static void Main(string[] args)
{
var host = CreateHostBuilder(args)
.Build();
host.Run();
}
// EF Core uses this method at design time to access the DbContext
public static IHostBuilder CreateHostBuilder(string[] args)
=> Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webHostBuilder =>
{
webHostBuilder
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>();
});
}
推荐阅读
- excel - Vvlookup 上的单元格变化
- templates - Bindable Iterables in a template
- javascript - 数组转字符串,php转js
- sql-server - MSSQL 小数精度
- regex - 使用 sed 从一行中删除“*”?
- javascript - Discord.js 删除角色错误
- tensorflow - TensorFlow 对象检测 API 中的超参数优化
- jquery - 尝试在没有 nuget 的情况下安装 jquery-ui
- asp.net-core - How do I disable ASP.NET Core's "Razor Pages"?
- sql - ORACLE-SQL:如何计算数字类型的 2 次?