Asp.net core 无法创建类型为';AppDbContext';。用于设计时支持的不同模式

Asp.net core 无法创建类型为';AppDbContext';。用于设计时支持的不同模式,asp.net-core,entity-framework-core,asp.net-core-mvc,Asp.net Core,Entity Framework Core,Asp.net Core Mvc,我有一个netcoreapp3.0项目,使用实体框架,所有东西都在工作,直到它停止,所以我决定通过创建一个新项目,手动创建类并在其中复制/粘贴(当然是更改名称)来重新创建项目 新项目是netcoreapp3.1,我试图通过添加以下内容向数据库添加一个新表: public DbSet<UsersCredentialsModel> UsersCredentialsModels { get; set; } 无法创建“AppDbContext”类型的对象。有关设计时支持的不同模式,请参

我有一个netcoreapp3.0项目,使用实体框架,所有东西都在工作,直到它停止,所以我决定通过创建一个新项目,手动创建类并在其中复制/粘贴(当然是更改名称)来重新创建项目

新项目是netcoreapp3.1,我试图通过添加以下内容向数据库添加一个新表:

  public DbSet<UsersCredentialsModel> UsersCredentialsModels { get; set; }
无法创建“AppDbContext”类型的对象。有关设计时支持的不同模式,请参见

以下是该项目的片段:

using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Models;

namespace DatabaseContext
{
    public class AppDbContext : IdentityDbContext<ApplicationUser>
    {
        public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
        {

        }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            builder.Entity<Message>().Property(m => m.Service).HasConversion<int>();
            builder.Entity<ApplicationUser>().HasMany<Message>(m => m.Messages).WithOne(u => u.User).IsRequired();
            base.OnModelCreating(builder);
        }


        public DbSet<Message> Messages { get; set; }
        public DbSet<UsersCredentialsModel> UsersCredentialsModels { get; set; }
    }
}
使用Microsoft.AspNetCore.Identity.EntityFrameworkCore;
使用Microsoft.EntityFrameworkCore;
使用模型;
命名空间数据库上下文
{
公共类AppDbContext:IdentityDbContext

编辑:

运行add migration“name”后,详细描述我得到的堆栈跟踪:

 System.NullReferenceException: Object reference not set to an instance of an object.
An error occurred while accessing the Microsoft.Extensions.Hosting services. Continuing without the application service provider. Error: Object reference not set to an instance of an object.
No application service provider was found.
Finding DbContext classes in the project...
Found DbContext 'AppDbContext'.
Microsoft.EntityFrameworkCore.Design.OperationException: Unable to create an object of type 'AppDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
 ---> System.MissingMethodException: No parameterless constructor defined for type 'AutoMatcherProject1.Models.AppDbContext'.
   at System.RuntimeType.CreateInstanceDefaultCtorSlow(Boolean publicOnly, Boolean wrapExceptions, Boolean fillCache)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, Boolean wrapExceptions)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic, Boolean wrapExceptions)
   at System.Activator.CreateInstance(Type type)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.<>c__DisplayClass13_3.<FindContextTypes>b__13()
   --- End of inner exception stack trace ---
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.<>c__DisplayClass13_3.<FindContextTypes>b__13()
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func`1 factory)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__DisplayClass0_0.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
System.NullReferenceException:对象引用未设置为对象的实例。
访问Microsoft.Extensions.Hosting服务时出错。在没有应用程序服务提供程序的情况下继续。错误:对象引用未设置为对象的实例。
找不到应用程序服务提供程序。
正在项目中查找DbContext类。。。
找到DbContext“AppDbContext”。
Microsoft.EntityFrameworkCore.Design.OperationException:无法创建“AppDbContext”类型的对象。有关设计时支持的不同模式,请参阅https://go.microsoft.com/fwlink/?linkid=851728
--->System.MissingMethodException:没有为类型“AutoMatcherProject1.Models.AppDbContext”定义无参数构造函数。
位于System.RuntimeType.CreateInstanceDefaultCtorSlow(布尔publicOnly、布尔WrapeExceptions、布尔fillCache)
位于System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly、布尔skipCheckThis、布尔fillCache、布尔WrapeExceptions)
在System.Activator.CreateInstance(类型类型、布尔非公共、布尔WrapeExceptions)
位于System.Activator.CreateInstance(类型)
在Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.c__DisplayClass13_3.b_13()中
---内部异常堆栈跟踪的结束---
在Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.c__DisplayClass13_3.b_13()中
位于Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func`1工厂)
位于Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(字符串contextType)
位于Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(字符串名称、字符串输出目录、字符串上下文类型)
位于Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(字符串名称、字符串输出目录、字符串上下文类型)
在Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.c__DisplayClass0_0.b_0()中
在Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.c__DisplayClass3_0`1.b__0()中
位于Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作)
有趣的是,它与当前的构造函数一起在旧项目上工作,所以我不知道问题出在哪里。。
在我的例子中,我做了一些步骤,迁移成功了,我不知道怎么做,但我做的是在启动时添加迁移程序集

public void配置服务(IServiceCollection服务)
{
services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”),
x=>x.MigrationAssembly(“MyMigrationAssemblyProjectName”);
}
然后我将startup.cs设置为启动项目,并添加了迁移,因此它要求我添加包

Microsoft.EntityFrameworkCore.Design

安装包后,我运行了迁移,它要求我选择迁移程序集的项目,我选择了它,它成功了,我不确定哪一步解决了问题,但它最终成功了。在我的情况下,我做了一些步骤,迁移成功了,我不知道如何,但我所做的是在启动

public void配置服务(IServiceCollection服务)
{
services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”),
x=>x.MigrationAssembly(“MyMigrationAssemblyProjectName”);
}
然后我将startup.cs设置为启动项目,并添加了迁移,因此它要求我添加包

Microsoft.EntityFrameworkCore.Design
安装包后,我运行迁移,它要求我选择迁移程序集的项目,我选择了它,它成功了,我不确定哪一步确切地解决了问题,但它最终成功了

Microsoft.EntityFrameworkCore.Design