質問: EF Code First Migrationsが実稼働マシンでどのように機能するのかを明確にするために、私は助けが必要です。エンティティにアクセスするためのエンティティクラスとDbContext派生クラスがあります。今、私はこれらのいくつかのことを実行したいです。 * データベースが存在しない場合、私のアプリケーションは起動時にデータベースを作成する必要があります。 * データベーススキーマはモデルに合わせて調整する必要があります。 * データベースが今作成された場合、私はいくつかのインデックスを作成したいと思います。 * また、データベースが今作成されたのであれば、それは何らかの初期データによってシードされなければなりません。 * これらすべてのことは、NUGETコマンドや外部ツールなしで自動的に実行されなければなりません。 私は移行についての記事をいくつか読んだが、それらは主にNUGETの使用法または実行時の純粋な自動データベース更新( `MigrateDatabaseToLatestVersion` )に焦点を当てている。 `DbMigration`クラスについては知っていますが、 `MigrateDatabaseToLatestVersion`戦略と`DbMigration`どのように結合するのか理解できません。 **更新。** 実際、プロジェクトでNUGETを使用することはできず、「手作業で」移行する可能性が必要です。
回答: 単に`MigrateDatabaseToLatestVersion`使用して`MigrateDatabaseToLatestVersion` 。 > データベースが存在しない場合、私のアプリケーションは起動時にデータベースを作成する必要があります。 > > `MigrateDatabaseToLatestVersion`はそれをするでしょう > データベーススキーマはモデルに合わせて調整する必要があります。 > > `MigrateDatabaseToLatestVersion`はそれをするでしょう > データベースが今作成された場合、私はいくつかのインデックスを作成したいと思います。 > > 必要なすべてのインデックスを定義するために、データベースおよび`Sql`メソッドのコードベースの初期移行を`Up`メソッドで作成します。 > また、データベースが今作成されたのであれば、それは何らかの初期データによってシードされなければなりません。 > > 最初の移行では`Sql`を、移行設定では`Seed`メソッドを再度使用してください。 > NUGETコマンドや外部ツールを使わずに、これらすべてを自動的に実行する必要があります。 > > NuGetとコマンドは、設計時に準備するのに役立ちます(ただし、必要なアセンブリを参照して自分ですべてのコードを書くことができます)。ランタイムは、PowerShellコマンドを必要としません。 `DbMigrator`あなたが使用したくないシナリオにある`MigrateDatabaseToLatestVersion`し、あなたのコードからの移行を制御したいです。