我有两个解决方案,没有迁移的基本解决方案(正在生产中,因此我无法擦除数据),现在我已经分支了这个分支以设置迁移并进行一些模型更改。
首先,我需要在分支解决方案(第二个解决方案)上设置迁移,以便我可以应用模型更改,以便:
所以我删除了创建的数据库,因为我需要运行第一个解决方案来创建初始数据库设置(以模拟实时运行)。
当我运行第一个解决方案时,它会在MigrationsHistory表中创建一个名为InitialCreate(201807061432030_InitialCreate)的条目,该条目已自动创建。然后,我在第二个解决方案上运行update-database,该解决方案可以很好地应用我的模型更改,尽管它们在InitialCreate MigrationId中存在差异。
第二个解决方案中的迁移条目(按创建顺序和它们在解决方案中的顺序排列):
-201807061257015_InitialCreate
-201807061315294_InitialBlank
-201807061323086_add_entity
运行第一个然后是第二个解决方案后,迁移历史记录表中的迁移条目:
1 | 201807061315294_InitialBlank
2 | 201807061323086_add_entity
3 | 201807061432030_InitialCreate
第二个解决方案运行良好,但是当我尝试添加任何数据时,我得到 System.InvalidOperationException:自创建数据库以来,支持“ Context”上下文的模型已更改。考虑使用代码优先迁移来更新数据库。
我试图在第二个项目上创建另一个迁移,以确保它们不是尚未迁移的模型更改(应该不应该),但是出现错误。 无法生成显式迁移,因为以下显式迁移正在处理中:[201807061257015_InitialCreate]。在尝试生成新的显式迁移之前,请先应用待处理的显式迁移。
我的问题:
谢谢!
答案 0 :(得分:0)
我不确定这是否行得通,但我想我可能需要手动删除第一个InitialCreate并编辑数据库条目以反映正确的InitialCreate。基于这个问题,我刚刚发现了https://stackoverflow.com/a/13108243/3172635。
不过我必须在这个星期一尝试。
编辑:我首先尝试删除_MigrationHistory表中的InitialMigration条目,但这不起作用,因为它试图再次应用InitialMigrations,但由于已经创建了表,因此无法。因此,我要做的就是更新InitialMigration条目的MigrationId,以反映新项目中的状态。
我使用的sql: SET MigrationId ='201807061257015_InitialCreate'WHERE MigrationId ='201807061432030_InitialCreate'