0

我的應用程序中有兩個上下文。 一個在WebApi Project -> ApiContext (inherited from IdentityDbContext) 另一個在Infrastructure -> Context在Asp.Net Core中有兩個上下文的數據庫遷移(Docker上的SQL Server)

我在Linux上爲Docker Engine(microsoft/mssql-server-linux)使用Microsoft SQL Server的官方映像。我寫了DbFactory。下面你可以找到我的代碼。

APICONTEXT: 內部類APICONTEXT:IdentityDbContext { 公共APICONTEXT(DbContextOptions選項):基座(選項) { Database.EnsureDeleted(); }

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

語境

內部類上下文:的DbContext { 公共上下文(DbContextOptions選項):基座(選項) { Database.EnsureCreated(); }

public DbSet<Reservation> Reservations { get; set; } 

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 
    modelBuilder.Entity<Table>().ToTable("Table"); 
} 

}

在我的基建項目,我有我說DbFactory

public class DesignTimeDbContextFactory<T> : IDesignTimeDbContextFactory<T> 
    where T : DbContext 
{ 
    public T CreateDbContext(string[] args) 
    { 
     IConfigurationRoot configuration = new ConfigurationBuilder() 
      .SetBasePath(Directory.GetCurrentDirectory()) 
      .AddJsonFile("appsettings.json") 
      .Build(); 
     var builder = new DbContextOptionsBuilder<T>(); 
     var connectionString = configuration.GetConnectionString("DefaultConnection"); 
     builder.UseSqlServer(connectionString); 
     var dbContext = (T)Activator.CreateInstance(
      typeof(T), 
      builder.Options); 
     return dbContext; 
    } 
} 

internal class ContextDesignTimeDbContextFactory : DesignTimeDbContextFactory<Context> 
{ 
} 

和的WebAPI項目

internal class ApiContextDesignTimeDbContextFactory : DesignTimeDbContextFactory<ApiContext> 
{ 
} 

我想用實體框架核心遷移。 當我運行

dotnet ef migrations add InitialCreate 
在ApiProject

(使用CMD) 我得到

不止一個的DbContext被發現。指定使用哪一個。對於PowerShell命令使用 '-Context'參數,對於dotnet命令使用'--context' 參數。

請問我該如何處理Asp.Net Core 2.0和EntityFrameworkCore 2和docker上的兩個上下文的數據庫遷移問題。

回答

0

你應該指定的DbContext使用:

dotnet ef migrations add ArbitraryMigrationName -c YourDbContextName 
+0

所以我應該使用命令兩次,一次爲APICONTEXT和一次語境,對不對? – Cieja

+0

是的,確實如此。 – Orhun

相關問題