ASP.NET Core MVC における DB の自動 Migration 実行
tl;dr
Startup.cs
の Configure
メソッド内で IdentityDbContext 継承クラスインスタンス context
の context.Database.Migrate()
メソッドを呼ぶ
背景・動機
ASP.NET Core MVC アプリケーションにおいて、起動時に自動で Migration を実行して欲しい
方法
前提として、Entity Framework Core のを利用しているものとします。
まずは Migration を実行するためのクラスを Data/MigrationInitializer.cs
に作成します。
using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using System; namespace AppName.Data { public class MigrationInitializer { public static async void Initialize(IServiceProvider serviceProvider) { using (var context = new ApplicationDbContext( serviceProvider.GetRequiredService<DbContextOptions<ApplicationDbContext>>())) { await context.Database.MigrateAsync(); } } } }
次に、Startup.cs
内の Configure
メソッドの最後に以下のコードを追記します。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { // 中略 MigrationInitializer.Initialize(app.ApplicationServices); }
これで、アプリケーション起動時に Migration が自動で実行される様になります。