在多个DbContext中使用同一实体(EF Core 2)

时间:2018-07-04 15:35:20

标签: entity-framework entity-framework-core ef-core-2.0

在一个项目中我有两个共享相同实体的DbContext(EFCore 2)。 我的问题是EFCore为该实体创建了两个表。

每个DbContext都有其自己的架构。实际上,我想创建一个多域(和多个DbContext)应用程序,但一个DbContext中的实体是共享的,其他DbContexts引用这些实体。

上下文:

public class CommonContext : DbContext
{

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema("common");
    }

    public DbSet<DomainModel.Common.User> Users { get; set; }
}

public class App1DbContext : DbContext
{

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema("app1");
    }

    public DbSet<DomainModel.App1.Book> Books { get; set; }
}

型号:

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

public class Book 
{
    public string Title { get; set; }
    public User Author { get; set; }
}

我首先通过迁移创建了通用模式:

add-migration -context CommonContext
update-database -context CommonContext

然后,我创建了app1模式:

add-migration -context app1
update-database -context app1

但是EF在两个模式中都创建了“用户”表! EF无法理解这两个单独的DbContext正在共享同一实体(用户)。我希望EF仅在通用模式(CommonContext)中创建User表。

我该如何解决此问题?

0 个答案:

没有答案