もちろん、EF は最新の移行を MigrationHistory テーブルに保存して、特定の移行が既に実行されているかどうかを判断します。
私の質問は、同じ移行が同時に複数回実行されるのを防ぐために EF が行っていることについてです。同じデータベースを使用して異なるアプリケーション ドメインで実行される 2 つのアプリケーションがあるとします。両方のアプリが同時に開始されるため、両方が最新のデータベース移行への移行を開始します。が初期化子として設定されていると仮定MigrateDatabaseToLatestVersion
します。
最後に開始された移行が失敗したため、最初に実行された移行が直前に MigrationHistory テーブルを更新したと思います。EF はここで SQL トランザクションに依存して、遅すぎた移行をロールバックしますか? それとも、よりスマートなメカニズムを使用して 2 番目の移行の実行を防止していますか?