C# 未找到方法:';作废Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator..ctor(Microsoft.EntityFrameworkCore.Migrations.ImiglationsAssembly

C# 未找到方法:';作废Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator..ctor(Microsoft.EntityFrameworkCore.Migrations.ImiglationsAssembly,c#,mysql,api,asp.net-core,pomelo-entityframeworkcore-mysql,C#,Mysql,Api,Asp.net Core,Pomelo Entityframeworkcore Mysql,我正在创建一个包含3个项目的解决方案,一个用于EF核心,一个用于数据库,最后一个用于API。API是启动项目。我正在尝试从数据库项目构建迁移。此迁移应创建标识包内置的用户表。但是,我一直收到上述错误 我所有的项目都是ASP.NET Core 5.0 我使用的软件包有: 对于DB项目: *EntityFrameWorkCore *EntityFrameWorkCore.Tools *安装程序包Pomelo.EntityFrameworkCore.MySql-版本5.0.0-alpha.2 *Mic

我正在创建一个包含3个项目的解决方案,一个用于EF核心,一个用于数据库,最后一个用于API。API是启动项目。我正在尝试从数据库项目构建迁移。此迁移应创建标识包内置的用户表。但是,我一直收到上述错误

我所有的项目都是ASP.NET Core 5.0

我使用的软件包有:

对于DB项目:

*EntityFrameWorkCore

*EntityFrameWorkCore.Tools

*安装程序包Pomelo.EntityFrameworkCore.MySql-版本5.0.0-alpha.2

*Microsoft.AspNetCore.Identity

*Microsoft.AspNetCore.Identity.EntityFrameworkCore

对于API项目:

*EntityFrameWorkCore.设计

我在API启动项目中引用了DB项目

在API项目中,我做了以下更改:

到Startup.cs

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        //To Connect to MySQL:
        string mySqlConnectionStr = Configuration.GetConnectionString("DefaultConnection");
        services.AddDbContextPool<DBAccessContext>(options => options.UseMySql(mySqlConnectionStr, ServerVersion.AutoDetect(mySqlConnectionStr)));

        services.AddControllers();
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "Wasel.API", Version = "v1" });
        });
    }
最后,我的dbaccesscontent是:

public class DBAccessContext : IdentityDbContext<User>
{
    public DBAccessContext (DbContextOptions<DBAccessContext> options) : base(options)
    {

    }
}

我通过将所有框架包从6.0.0预览版降级到5.0.3稳定版本来解决了这个错误。迁移只需要在数据库更改时执行,而不是每次应用程序运行时执行。迁移应该在数据库项目中执行,而不是在API中执行。我会手动执行迁移基于仅执行迁移的数据库项目创建一个新项目。我创建的迁移是第一次迁移,我确保选择db项目确保配置更改位于数据库项目的命名空间中,而不是api项目中。如果升级了net/core版本。看起来您没有引用所有三个项目中的所有库,因此编译时缺少一些库。添加更多库可能会导致重复定义,这可能更难解决。您所说的“确保配置更改位于数据库项目的命名空间中,而不是api项目中”???EF Core providers仅与它们编写的主要版本兼容。因此,Pomelo 5.0.0仅与EF Core 5.x.y兼容。
public class DBAccessContext : IdentityDbContext<User>
{
    public DBAccessContext (DbContextOptions<DBAccessContext> options) : base(options)
    {

    }
}
public class User : IdentityUser
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}