どのようにどこでDatabase.EnsureCreatedとDatabase.Migrateを呼び出しますか?

asp.net asp.net-mvc entity-framework entity-framework-core

質問

私はASP.NET MVC 6アプリケーションを持っており、私はDatabase.EnsureCreatedメソッドとDatabase.Migrateメソッドを呼び出す必要があります。

しかし、どこで呼びますか?

人気のある回答

私はこれが重要な質問だと思います。

Database.EnsureCreatedとは何ですか?

context.Database.EnsureCreated()は、新しいEFコアメソッドで、コンテキストのデータベースが存在することを保証します。存在する場合、何も実行されません。存在しなければ、データベースとそのすべてのスキーマが作成され、このコンテキストのモデルと互換性があることも保証されます。

注意:この方法では、データベースを作成するために移行は使用されません。また、作成されたデータベースは、移行を使用して後で更新することもできません。リレーショナルデータベースを対象とし、移行を使用する場合は、 DbContext.Database.Migrate()メソッドを使用してデータベースが作成され、すべての移行が適用されることを確認できます。

どのようにEF 6でそれをしましたか?

context.Database.EnsureCreated()は、下記のEF 6のアプローチと同等です。

  1. パッケージマネージャコンソール:

    Enable-Migrations -EnableAutomaticMigrations。追加マイグレーション/更新データベース。

  2. コードから:

    Database.SetInitializer CreateDatabaseIfNotExists

または

DbMigrationsConfigurationを使用し、AutomaticMigrationsEnabled = trueに設定します。

Database.Migrateとは何ですか?

コンテキストの保留中の移行をデータベースに適用します。データベースがまだ存在しない場合は作成します。

どのようにEF 6でそれをしましたか?

context.Database.Migrate()は、下記のEF 6のアプローチと同等です。

  1. パッケージマネージャコンソール:

    データベース更新 - ターゲットマイグレーション

  2. カスタムDbMigrationsConfigurationを使用する場合:

    AutomaticMigrationsEnabled = false;またはDbMigratorを使用します。

結論

移行を使用している場合は、 context.Database.Migrate()ます。マイグレーションが不要で、簡単なデータベース(通常はテスト用)が必要な場合は、context.Database.EnsureCreated()/ EnsureDeleted()を使用します。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ