Entity Framework 4.4を使用しており、移行を使用しています。データベースはすでに存在しており、定期的に更新する必要があります。ただし、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
しかし、移行は空になります。
Seedがcmotが呼び出されている理由と、ルックアップテーブルの追加の値が検出されていない理由を誰かが知っていますか?
ありがとうN
移行Seedメソッド
update-DatabasePowerShellコマンドが実行されるたびに実行されます
Update-Database
ではなくAdd-Migration
を呼び出す必要があります
Add-Migration
は、データベースを新しいバージョンに移行するためのコマンドを含む移行ファイルをスキャフォールドします。スキーマを変更する必要がないため、空です。シードだけの場合は、Add-Migration
を呼び出す前にUpdate-Database
を呼び出す必要はありません。
参照:
最初のDb初期化戦略をコーディングします。
コードの最初の移行で読むことをお勧めします
管理された移行
データベース初期化子と移行Seedメソッド