-1

私のアプリケーションではまずEntity Frameworkコードを使用しています。しかし、モデルの更新後にこれを使用している間は、自動移行を有効にして、パッケージマネージャコンソールを使用してupdate-databaseを実行する必要があります。これを自動化できるかどうかは、パッケージマネージャコンソールを使用せずにupdate-databaseに解決できるかどうかは誰にでも分かります。パッケージマネージャコンソールを使用せずにコードを使用してのみ移行を有効にする方法

答えて

1

Configuration.csクラスとInitialマイグレーションを生成するためには、Enable-Migrationsを一度だけ実行する必要があります。その後、モデルを変更するたびにAdd-Migrationを実行して新しい移行を生成し、Update-Databaseを実行してデータベースに移行する必要がありますが、Enable-Migrationsを再度実行する必要はありません。

あなたは、プロセスを自動化したい場合は、あなたのConfigurationクラスのコンストラクタにAutomaticMigrationsEnabled = trueを設定することにより、移行の自動生成を可能にし、あなたのDbContextMigrateDatabaseToLatestVersionデータベースの初期化子を使用することができます。これにより、モデルコードを変更するだけでPackage Managerコンソールで何もする必要がなくなります。Add-MigrationUpdate-Databaseも必要ありません。 Enable-Migrationsは、最初にプロジェクトを作成した後で、Initialの移行を生成するために1回実行する必要があります。

いずれにしても自動移行で問題が発生する可能性がありますので、実際に使用することはお勧めしません。したがって、モデルが変更されるたびに手動のAdd-Migrationコマンドを実行していきます。 MigrateDatabaseToLatestVersionデータベースイニシャライザを使用する場合は、Update-Databaseをスキップすることはできます。それを行うには

もう一つの方法は、(あなたがMigrateDatabaseToLatestVersionデータベースの初期化子を使用している場合は、あなたがこれを行う必要はありません)あなたのコードからUpdate-Databaseに相当するものを実行するためにDbMigratorを使用することになります。

var migrator = new DbMigrator(new DbMigrationsConfiguration()); 
migrator.Update(); 
関連する問題