Entity Framework~Code-Based Migration - マイグレーションを有効化する
概要
パッケージマネージャーコンソールからEntity Frameworkを操作して、Code Firstマイグレーションを出来るようにします。
環境
Microsoft Visual Studio Community 2013
Entity Framework 6.1.3
実践
1.ヘルプを表示する
Entity Frameworkのコマンドレットを確認しておきましょう。
PM> Get-Help EntityFramework
2.マイグレーションを有効にする
PM> Enable-Migrations
プロジェクトにMigrationsフォルダ、その中にConfiguration.csファイルが作成されます。
■Configuration.cs
namespace ConsoleApplication1.Migrations { using System; using System.Data.Entity; using System.Data.Entity.Migrations; using System.Linq; internal sealed class Configuration : DbMigrationsConfiguration<ConsoleApplication1.DAL.EFContext> { public Configuration() { AutomaticMigrationsEnabled = false; } protected override void Seed(ConsoleApplication1.DAL.EFContext context) { // This method will be called after migrating to the latest version. // You can use the DbSet<T>.AddOrUpdate() helper extension method // to avoid creating duplicate seed data. E.g. // // context.People.AddOrUpdate( // p => p.FullName, // new Person { FullName = "Andrew Peters" }, // new Person { FullName = "Brice Lambson" }, // new Person { FullName = "Rowan Miller" } // ); // } } }
最初に一回だけやればOKです。
試しに再実行してみたら怒られました。
Forceオプションを付けて実行すると既存のConfiguration.csを上書きします。
PM> Enable-Migrations -Force
3.マイグレーションのバージョン管理
ひとまず初回のスナップショットとしてスキーマバージョン"Initial"と名前を付けておきます。
PM> Add-Migration Initial
Migrationフォルダにタイムスタンプのついたクラスファイルが自動生成されます。
■201506092253526_Initial.cs
namespace ConsoleApplication1.Migrations { using System; using System.Data.Entity.Migrations; public partial class Initial : DbMigration { public override void Up() { CreateTable( "dbo.People", c => new { ID = c.Int(nullable: false, identity: true), Name = c.String(nullable: false, maxLength: 50), PhoneNumber = c.String(maxLength: 50), Address = c.String(maxLength: 50), Job = c.String(maxLength: 25), UpdatedBy = c.String(), UpdateDate = c.DateTime(), }) .PrimaryKey(t => t.ID); } public override void Down() { DropTable("dbo.People"); } } }