C# 无法创建类型为';ApplicationDbContext';。用于设计时支持的不同模式

C# 无法创建类型为';ApplicationDbContext';。用于设计时支持的不同模式,c#,asp.net-core,.net-core,.net-core-3.0,.net-core-3.1,C#,Asp.net Core,.net Core,.net Core 3.0,.net Core 3.1,在.net core中添加数据库迁移时,我面临以下错误 这就是错误: 这是启动中的代码: public void配置服务(IServiceCollection服务) { services.AddDbContext(选项=> options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”)); services.AddDefaultIdentity().AddEntityFrameworkStores(); s

在.net core中添加数据库迁移时,我面临以下错误

这就是错误:

这是
启动
中的代码:

public void配置服务(IServiceCollection服务)
{
services.AddDbContext(选项=>
options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”));
services.AddDefaultIdentity().AddEntityFrameworkStores();
services.AddControllers();
}
这是
ApplicationDbContext
类:

public类ApplicationDbContext:IdentityDbContext
{
公共应用程序DBContext(DbContextOptions选项):基本(选项)
{ }
公共数据库集应用程序用户{get;set;}
}
这是
应用程序用户

公共类应用程序用户:IdentityUser
{
[必需]
[列(TypeName=“nvarchar(150)”)]
公共字符串UserFName{get;set;}
[必需]
公共字符串UserLName{get;set;}
}

看来你是错的,你的继承权是错的

public ApplicationDbContext : IdentityDbContext
应该是

public ApplicationDbContext : IdentityDbContext<ApplicationUser>
public ApplicationDbContext:IdentityDbContext

public ApplicationDbContext:IdentityDbContext
如果您还扩展了角色类


当您希望使用扩展用户类(而不是
IdentityUser
)创建上下文时,

虽然OP面临的问题似乎是由于不正确地使用了AspNet Identity提供的基类,但通常在设计时无法创建ApplicationDbContext实例时会遇到此错误。有两种解决方案。其中之一是在StartUp类的ConfigureServices方法中指定ApplicationDbContext提供程序:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options => {
        options.UseSqlServer(Configuration.GetConnectionString("MyConnection"));
    });
}
public void配置服务(IServiceCollection服务)
{

services.AddDbContext

我发现导致此错误的原因可能是代码中的多个方面。至少对我来说,最好的方法是在命令中添加verbose

这样,您就可以了解问题所在。
verbose
将显示执行的所有步骤

在visual studio中使用:

add-migration Added_something -verbose
对于CLI使用:

dotnet ef migrations add Added_something  --verbose

我得到了同样的错误…除了代码在几分钟前工作正常。 我正在用
Fluent API

我有三个项目:WebApp、DataAccess库和模型库

在尝试了几次不成功的迁移之后,我最终做了一个
Build->Clean Solution
,并在WebApp上做了一个Build。
每件事都重新开始工作…我无法重新创建错误。

如果选择了多个启动项目,也会发生此错误。我将我的webproject设置为startup project,这为我解决了问题。

我在startup.cs中忘记执行此操作时遇到此错误,希望对某人有所帮助:)

services.AddTransient();

如果从.net core应用程序的Program.cs中删除静态IHostBuilder CreateHostBuilder(字符串[]args)
方法,也会发生此错误。(这是我的案例)

此错误发生在我身上,但同时我在访问Microsoft.Extensions.Hosting服务时也发生了一个
错误。在没有应用程序服务提供商的情况下继续。错误:无法解析JSON文件。


修复我的
appsettings.json
文件解决了这个问题。

我也有同样的错误,只需修改程序类.Net Core 3.0

    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
publicstaticvoidmain(字符串[]args)
{
CreateHostBuilder(args.Build().Run();
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
});

publicstaticvoidmain(字符串[]args)
{
BuildWebHost(args.Run();
}
公共静态IWebHost BuildWebHost(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.Build();

从azure管道任务运行dot-net ef migrations脚本命令时,我遇到了相同的问题。我添加了“-project”参数。但仍然失败。 添加“-startup project”参数对我很有效。
我想即使我们在project中指定了startup类,为了让ef工具找到一个,我们也必须明确地提到它们。

我的问题通过安装
Microsoft.EntityFrameworkCore.Design
nuget软件包得到了解决

实体框架核心工具需要此软件包才能工作。请确保您的启动项目正确无误。然后安装该软件包

在项目中的Build->Clean Solution结束时,再次尝试运行命令

添加迁移命令cli:

dotnet ef migrations add InitDatabase --project YourDataProjectName -s YourWebProjectName -c YourDbContextName --verbose 
dotnet ef database update InitDatabase --project YourDataProjectName -s YourWebProjectName -c YourDbContextName --verbose
更新数据库命令cli:

dotnet ef migrations add InitDatabase --project YourDataProjectName -s YourWebProjectName -c YourDbContextName --verbose 
dotnet ef database update InitDatabase --project YourDataProjectName -s YourWebProjectName -c YourDbContextName --verbose

我今天在运行
dotnet ef migrations add

我有三个项目,MainApp(Web)、带有DBContext的C#项目和用于模型的C#项目

我能够从CLI中解决它

dotnet ef migrations add AddCategoryTableToDb -s MainApp -p ProjectHavingDbContext

当我的DbContext有两个构造函数时,我也遇到了同样的错误。在重新排列构造函数之后,将其排序为类中的第一个无参数构造函数,从而修复了它

public ProgramDbContext() : base()
{
}
public ProgramDbContext(DbContextOptions<ProgramDbContext> options) : base(options)
{
}
publicprogramdbcontext():base()
{
}
公共编程DBContext(DbContextOptions):基本(选项)
{
}
这一定是动态DbContext对象调用的结果,这里正在播放反射。

我发现我丢失了:

Microsoft.EntityFrameworkCore.Tool

Microsoft.EntityFrameworkCore.Design

我有多个启动项目(不同的API)。 我在PM控制台中处于不同的级别。 然后我了解到我必须关闭SQL管理,这样我才能
public ProgramDbContext() : base()
{
}
public ProgramDbContext(DbContextOptions<ProgramDbContext> options) : base(options)
{
}
dotnet ef migrations add YourMigrationName  --verbose