2013-11-27 26 views
11

私たちはEntity Framework 4.4を使用し、移行を使用しています。データベースはすでに存在しており、定期的にデータベースを更新する必要があります。ただし、シードメソッドは呼び出されていないため、参照値は追加されません。Entity Framework Seedメソッドが呼び出されていません

コードは以下のようになります。

internal sealed class Configuration : DbMigrationsConfiguration<MyDbContext> 
{ 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = false; 
      SetSqlGenerator("System.Data.SqlClient", new OurSqlServerMigrationSqlGenerator()); 
     } 

     protected override void Seed(KinectionDbContext context) 
     { 
      SeedLookupTables(context); 
     } 

     private static void SeedLookupTables(KinectionDbContext context) 
     { 
      context.Titles.AddOrUpdate(t => t.Value, 
       new Title {Value = "Mr"}, 
       new Title {Value = "Mrs"}, 
       new Title {Value = "Miss"}, 
       new Title {Value = "Ms"}, 
       new Title {Value = "Dr"} 
      ); 

      context.SaveChanges(); 
     } 

} 


public class MyDbContext : ObjectContext 
    { 
     public MyDbContext() 
     { 

     } 

     static MyDbContext() 
     { 
      Database.SetInitializer<KinectionDbContext>(null); 
     } 

     public DbSet<Title> Titles { get; set; } 

} 

そして、我々は呼んでいる:

Add-Migration Seed 
をしかし、移行が空にアップします。

シードがコールされている理由とルックアップテーブルの追加値が検出されない理由は誰にもありますか?

おかげ N

答えて

23

移行シード方法がアップデート - データベースのPowerShellコマンドが あるたび

ランはあなたがUpdate-DatabaseないAdd-Migration

Add-Migrationを呼び出す必要が

を実行しましたスカデータベースを新しいバージョンに移行するためのコマンドを含む移行ファイルを作成します。これはスキーマを変更する必要がないため空です。あなたがしたいすべてがシード

参照されている場合は、Update-Databaseを呼び出す前Add-Migrationを呼び出す必要はありません。

Code first Db initialization strategies.
Code first migrations recommended reading
Managed Migrations
Database initializer and Migrations Seed methods

+0

:)働いていたこと、ありがとうございます。しかし、シードするためのSQLスクリプトを取得する方法はありますか? –

+0

答えを見るhttp://stackoverflow.com/a/18190509/150342 – Colin

+0

update-migrationは私のシードメソッドでファイルやその他のロジックの実装を使用していたのでエラーバッグを返します –

関連する問題