当然,EF 会将最新的迁移存储到 MigrationHistory 表中,以确定是否已经执行了特定的迁移。
我的问题是关于 EF 正在做什么来防止同时执行相同的迁移。假设您有两个使用相同数据库在不同应用程序域下运行的应用程序。两个应用程序同时启动,因此都开始迁移到最新的数据库迁移。假设MigrateDatabaseToLatestVersion
设置为初始化器。
我认为最后开始的迁移失败导致第一次执行的迁移刚刚更新了 MigrationHistory 表。EF 是否在这里依赖 SQL 事务来回滚为时已晚的迁移?还是它使用更智能的机制来阻止执行第二次迁移?