私のアプリケーションに2つのコンテキストがあります。 WebApi Project -> ApiContext (inherited from IdentityDbContext)
およびもう1つはInfrastructure -> Context
である。Asp.Netコア(DockerのSQL Server)で2つのコンテキストを使用したデータベースの移行
Docker Engine(microsoft/mssql-server-linux
)の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プロジェクトに
言ったように、私が持っています0internal class ApiContextDesignTimeDbContextFactory : DesignTimeDbContextFactory<ApiContext>
{
}
エンティティフレームワークのコアマイグレーションを使用したいと思います。私はApiProjectで
dotnet ef migrations add InitialCreate
を実行すると は私が
あなたは私がAsp.Netコア2.0とEntityFrameworkCore 2とドッキングウィンドウ上の2つのコンテキストでデータベースの移行を処理する方法を教えてもらえます。つ以上のDbContextが見つかった取得(CMDを使用)。使用するものを指定します。 PowerShellコマンドには '-Context'パラメータを使用し、dotnetコマンドには '--context' パラメータを使用してください。
だから私は右、コマンド二回、一回ApiContextため、一度コンテキストのことを使用する必要がありますか? – Cieja
はい、まあまあです。 – Orhun