概要
EF6でコードからMigrationするときに、Migrationの実行内容を見たいときがあります。
その方法です。
やること
1. MigrationsLoggerを継承したロギングクラスを作成します。以下はConsoleに出力する例です。
MyLogger.cs
public class MyLogger : System.Data.Entity.Migrations.Infrastructure.MigrationsLogger
{
public override void Info(string message)
{
System.Console.WriteLine($"[Info]{message}");
}
public override void Verbose(string message)
{
System.Console.WriteLine($"[Verb]{message}");
}
public override void Warning(string message)
{
System.Console.WriteLine($"[Warn]{message}");
}
}
2. MigrationLoggingDecoratorを生成してUpdate()します。
Program.cs
static void Main(string[] args)
{
var configuration = new Configuration(); // Enable-Migrationsで自動生成されたクラス
var migrator = new System.Data.Entity.Migrations.DbMigrator(configuration)
MigratorLoggingDecorator logger = new System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator(migrator, new MyLogger());
logger.Update();
:
:
参考URL
-
http://whiteknight.github.io/2013/01/26/efcodeonlymigrations.html
- コードからMigrationを実行する方法全般について書いてある記事
下記のstackoverflowの記事からも参照している。
- コードからMigrationを実行する方法全般について書いてある記事
-
https://stackoverflow.com/questions/24357963/dbmigrator-verbose-code-first-migration
- 同じ悩みを持ったstackoverflowの記事