/ /異なる環境のエンティティフレームワークデータ移行-エンティティフレームワーク、エンティティフレームワーク6、ef-migrations

異なる環境のエンティティフレームワークデータ移行 - エンティティフレームワーク、エンティティフレームワーク6、efマイグレーション

Dev / Test / Prod環境に固有の基本データがいくつかあります。

現在Entity Framework Migrationsを使用していますすべての環境が、特定の環境の移行を指定する方法がわからない。Dev/ Test / Prodでのみ実行される移行を指定する方法。

これは、タグ属性を使用してFluent Migratorで実現できます。しかし、Entity Frameworkはどうでしょうか?

回答:

回答№1は1

「ベースデータ」と言うときは、各環境をシードすることを意味すると仮定します。移行により、 播種メカニズム このため。 Seed()内では、通常のコードと同じように環境を区別できます。 Web.config変換設定を使用したい:

protected override void Seed(BookService.Models.BookServiceContext context)
{
if (ConfigurationManager.AppSettings["DeployEnvironment"] == "UAT")
{
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Test User" },
);
}
else if (ConfigurationManager.AppSettings["DeployEnvironment"] == "PROD")
{
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Production User" },
);
}
}

別のオプションはコンパイラ指令です:

protected override void Seed(BookService.Models.BookServiceContext context)
{
#if DEBUG
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Test User" },
);
#else
context.Authors.AddOrUpdate(x => x.Id,
new Author() { Id = 1, Name = "Production User" },
);
#endif
}

移行自体を適用する限り、私たちは従います このプロセス 開発中。 UATに展開する準備ができたら、接続文字列をUATに向けて移行を実行するか、 スクリプトを作成する データベースを更新します。 PRODでは この.