Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF核心第三方库迁移未运行_C#_.net_Entity Framework_.net Core_Entity Framework Core - Fatal编程技术网

C# EF核心第三方库迁移未运行

C# EF核心第三方库迁移未运行,c#,.net,entity-framework,.net-core,entity-framework-core,C#,.net,Entity Framework,.net Core,Entity Framework Core,我已经创建了一个具有db表的第三方库。这个库的目的是在我的其他几个项目中使用。它提供基础设施工作(特定用户权限)。因此,为了避免在每个服务中编写相同的代码,我将其重构为一个库。这是公共课 public class UserAccessContext : DbContext { public UserAccessContext(DbContextOptions options) : base(options) { Database.Migrate()

我已经创建了一个具有db表的第三方库。这个库的目的是在我的其他几个项目中使用。它提供基础设施工作(特定用户权限)。因此,为了避免在每个服务中编写相同的代码,我将其重构为一个库。这是公共课

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});
    }
}
public类UserAccessContext:DbContext
{
公共UserAccessContext(DbContextOptions选项)
:基本(选项)
{
Database.Migrate();
}
public DbSet ClientPermission{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
基于模型创建(modelBuilder);
modelBuilder.Entity().HasKey(c=>new{c.UserId,c.PermissionId});
}
}
我已经创建了迁移脚本(添加迁移…),脚本看起来还可以。它创建ClientPermission表。已将库导入其中一个服务(服务A),我可以看到在启动服务A时UserAccess库的迁移脚本未运行。唯一运行的迁移脚本是属于服务A的迁移脚本。调用
UserAccessContext
时,将执行
Database.Migrate()
,但未找到需要应用的任何更改。
为什么会发生这种情况?我如何强制执行它以运行迁移脚本?

确保在DbContextOptions中使用正确的迁移程序集。默认情况下,将使用当前程序集,但您需要使用迁移代码所在的程序集(如果我了解您的情况,请在此处使用您的库)。检查此链接:

检查数据库中的迁移表,确保在DbContextOptions中使用了正确的迁移程序集。默认情况下,将使用当前程序集,但您需要使用迁移代码所在的程序集(如果我了解您的情况,请在此处使用您的库)。查看此链接:@CemSOYDING可能我最初的帖子不清楚。这是一个第三方库。我目前有ServiceADbContext和UserAccessContext。每个上下文都创建了自己的迁移脚本。UserAccessContext属于LibraryUserAccess,并创建了自己的迁移脚本。此脚本不会与ServiceADbContext迁移脚本一起执行。是的,那么您是对的,它应该可以工作。我刚刚测试了以下设置:一个带有模型、DbContext和迁移代码的类库,一个引用库并使用DbContext的控制台应用程序。我可以看到应用了迁移。可能与您正在使用的数据库提供程序有关?(我用SQLite做了测试)是的,你是对的。它起作用了。我将第三部分库dll指定为UserAccessContext选项的迁移程序集。谢谢