在一个项目中我有两个共享相同实体的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表。
我该如何解决此问题?