代码优先迁移问题
Code-First migrations issue
我有一个连接到数据库的项目,该项目是使用代码优先迁移创建的。
Migrations 文件夹中的所有迁移 cs 文件都被删除,但数据库中有 __MigrationHistory table。
现在我需要修改模型并将更改应用到数据库。
我能否以某种方式从历史 table 恢复迁移文件,以便 "add-migration" 命令生成正确的更新脚本?
一旦迁移应用到您关心的所有已部署数据库,重新建立新基线就没什么大不了的。您将无法回滚到先前的迁移,但如果需要,可以通过多种方式执行此操作。我经常汇总我的迁移或在未使用它们的现有数据库上开始迁移。
您可以通过以下方式恢复同步:
1) Remove the __MigrationHistory table from your database.
2) Remove your migration folder from the project.
3) enable-migrations
4) add-migration InitialSnapshot -IgnoreChanges // tells EF to do a snapshot only
5) update-database
现在您将使用当前模型状态进行一次迁移,因此现在您可以进行模型更改、添加第二个迁移并生成更新脚本。
你也可以做一个幂等脚本,它会显示你所有的数据库对象,以防你想检查丢失的项目:
update-database -Script –SourceMigration $InitialDatabase
有关 EF operates under the hood 的详细信息,请参阅此处。
我有一个连接到数据库的项目,该项目是使用代码优先迁移创建的。 Migrations 文件夹中的所有迁移 cs 文件都被删除,但数据库中有 __MigrationHistory table。
现在我需要修改模型并将更改应用到数据库。 我能否以某种方式从历史 table 恢复迁移文件,以便 "add-migration" 命令生成正确的更新脚本?
一旦迁移应用到您关心的所有已部署数据库,重新建立新基线就没什么大不了的。您将无法回滚到先前的迁移,但如果需要,可以通过多种方式执行此操作。我经常汇总我的迁移或在未使用它们的现有数据库上开始迁移。
您可以通过以下方式恢复同步:
1) Remove the __MigrationHistory table from your database.
2) Remove your migration folder from the project.
3) enable-migrations
4) add-migration InitialSnapshot -IgnoreChanges // tells EF to do a snapshot only
5) update-database
现在您将使用当前模型状态进行一次迁移,因此现在您可以进行模型更改、添加第二个迁移并生成更新脚本。
你也可以做一个幂等脚本,它会显示你所有的数据库对象,以防你想检查丢失的项目:
update-database -Script –SourceMigration $InitialDatabase
有关 EF operates under the hood 的详细信息,请参阅此处。