2

もちろん、EF は最新の移行を MigrationHistory テーブルに保存して、特定の移行が既に実行されているかどうかを判断します。

私の質問は、同じ移行が同時に複数回実行されるのを防ぐために EF が行っていることについてです。同じデータベースを使用して異なるアプリケーション ドメインで実行される 2 つのアプリケーションがあるとします。両方のアプリが同時に開始されるため、両方が最新のデータベース移行への移行を開始します。が初期化子として設定されていると仮定MigrateDatabaseToLatestVersionします。

最後に開始された移行が失敗したため、最初に実行された移行が直前に MigrationHistory テーブルを更新したと思います。EF はここで SQL トランザクションに依存して、遅すぎた移行をロールバックしますか? それとも、よりスマートなメカニズムを使用して 2 番目の移行の実行を防止していますか?

4

1 に答える 1

0

一部の移行手順は個別のトランザクションで 1 つずつ実行されますが、状況は単純ではありません。2 つ (またはそれ以上) の移行ステップだけでなく、移行ステップと通常のプログラム実行が干渉する可能性があります。

リンク:少し古いですが、役に立ちます

更新:アイデアはここにあります:

于 2013-09-09T21:13:29.203 に答える