EF Core 3rd方库迁移未运行

时间:2020-09-30 10:40:03

标签: c# .net entity-framework .net-core entity-framework-core

我创建了一个具有db表的第3方库。该库的目的是在我拥有的其他多个项目中使用。它提供基础结构工作(特定的用户权限)。因此,为了不在每个服务中编写相同的代码,我将其重构为一个库。这个libpublic类

public class UserAccessContext : DbContext
{
    public UserAccessContext(DbContextOptions options)
        : base(options)
    {
        Database.Migrate();
    }

    public DbSet<ClientPermission> ClientPermission{ get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<ClientPermission>().HasKey(c => new { c.UserId, c.PermissionId});
    }
}

我已经创建了迁移脚本(Add-Migration ...),该脚本似乎还可以。它创建ClientPermission表。将库导入到其中一个服务(服务A)中,可以看到启动Service A时UserAccess库的迁移脚本未运行。唯一运行的迁移脚本是属于ServiceA的迁移脚本。调用UserAccessContext时,将执行Database.Migrate(),但找不到需要应用的任何更改。 为什么会发生这种情况,如何执行它来运行UserAccessContext迁移脚本?

1 个答案:

答案 0 :(得分:1)

确保在DbContextOptions中使用正确的MigrationsAssembly。默认情况下,将使用当前程序集,但您需要使用迁移代码所在的程序集(如果我对您很了解,请在这里的库中使用)。检查此链接: https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/projects?tabs=dotnet-core-cli