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