我正在使用EF Core,我决定拆分我正在使用的DbContexts。 一切都是正确的,但我注意到,当我为每个上下文创建迁移时,即使其他上下文先前已创建该表,EF也会尝试再次创建表。 我认为EF Core必须尝试更新表而不是尝试创建它们但我不知道为什么EF Core会这样做。
AccountsContext:
public class AccountsContext : BaseContext<AccountContext>
{
public AccountContext(DbContextOptions<AccountsContext> options): base (options){}
public DbSet<Account> Accounts { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Account>().HasKey(a => a.id);
modelBuilder.Entity<Account>().Property(a => a.Name).HasField("_name");
modelBuilder.Entity<Account>().Property(a => a.Role).HasField("_role");
modelBuilder.Entity<Account>().OwnsOne(a => a.Password);
modelBuilder.Entity<Account>().OwnsOne(a => a.Email);
}
}
CampaignContext:
public class CampaignContext: BaseContext<CampaignContext>
{
public CampaignContext(DbContextOptions<CampaignContext> options): base (options){}
public DbSet<Campaign> Campaing { get; set; }
private DbSet<Account> Accounts { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Campaing>().ToTable("Campaings");
modelBuilder.Entity<Campaing>().HasKey(a => a.Id);
modelBuilder.Entity<Campaing>().HasOne(c => c.Owner);
modelBuilder.Entity<Account>().ToTable("Accounts");
}
}
以下是广告系列环境中迁移的支架。 EF Core看起来就像尝试创建帐户表一样,即使它已经存在于数据库中。
答案 0 :(得分:0)
您应该通过
指定要使用的上下文 dotnet ef Update Database -Context DbContext
答案 1 :(得分:0)
Ef核心中的每个上下文都被视为一个单独的数据库,因此您将该表放在两个数据库中,我不知道为什么要这样做,但是在两个迁移中都可以看到该表是正常的>