ナゲットなしでDBを移行するには? 実稼働環境で nuget を使用して Visual Studio を使用することはできません。現在、多くの例では、nuget で Visual Studio を使用することしか教えていません。生成された DbMigration クラスの使用方法
6 に答える
最も簡単な方法は次のとおりです。
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyDbContext,
MyDbMigrationsConfiguration>());
これにより、DbContext の初期化時に移行が実行されます。
手動で強制的に実行することもできます:
var migrator = new DbMigrator(new MyMigrationsConfiguration());
migrator.Update();
(TargetDatabase
構成も設定する必要があると思いますが、試すことができます)
オプションは次のとおりです。
- NuGet パッケージに同梱されている migrate.exe コマンド ライン ツールを使用します。
- 他の人が説明したように、MigrateDatabaseToLatestVersion 初期化子を使用します。
- DbMigrator クラスから利用可能なランタイム API を使用します。
Web.config 設定を使用して最新バージョンに移行できます。Rowan Miller によるこのブログ投稿を参照してください。
Code First Migrations を使用している場合は、MigrateDatabaseToLatestVersion 初期化子を使用して、データベースが自動的に移行されるように構成できます。
<contexts>
<context type="Blogging.BlogContext, MyAssembly">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Blogging.BlogContext,
MyAssembly], [Blogging.Migrations.Configuration, MyAssembly]], EntityFramework" />
</context>
</contexts>
ここでコンテキスト クラスを交換するだけです。System.Data.Entity.MigrateDatabaseToLatestVersion は EF に組み込まれています。この設定は、同じアイデアの古い AppSettings バージョンを更新します。
私の考えでは、これが最善の方法です。どのイニシャライザーを使用するかという問題は実際には構成の問題であり、これを Web.config できるようにし、理想的にはさまざまな環境で動作するように構成変換を適用したいからです。
EF Power Toolsを使用して実行できます。コマンドプロンプトから移行を実行するために使用できるmigrate.exeプログラムがあります(ビルド後など)。本番データベースで移行を実行する場合は、Update-Databaseコマンドを使用して、移行クラスからSQLスクリプトを生成することもできます。これは、DBAを通過する必要がある場合に非常に便利です。
EFPowerToolsはVisualStudioGalleryで利用でき、オプションでここで、特にUpdate-Databaseコマンドについて説明しているこの非常に便利なビデオをチェックしてください。