如何清理并为现有数据库生成新的迁移?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何清理并为现有数据库生成新的迁移?相关的知识,希望对你有一定的参考价值。
我们希望摆脱100多个迁移类,因为生产中的DB模式是最终的。
以下是我遵循的步骤:
- 删除迁移文件夹。
- 添加迁移 - ??
什么命令行切换,可以帮助我们?
编辑:
如果一切顺利,Up()迁移方法应该是空的吗?例如,以下是Add-Migration的错误生成。因为如果我们执行项目,我们将得到重复的表错误。
public partial class Sanity : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.AccountPreferences",
c => new
{
AccountID = c.Guid(nullable: false),
}
.... for 1000s of tables
}
}
干净的迁移将是一件事:在后续更改中尝试Add-Migration
时,不应该出现任何错误。
无法生成显式迁移,因为以下显式迁移正在等待处理:[201712281054591_Sanity]。在尝试生成新的显式迁移之前应用挂起的显式迁移。
正如你所看到的,如果我们碰巧执行Update-Database
会得到表已经存在的错误。
我们是否被迫始终保留所有迁移副本?
看看这是否有帮助:
Entity framework code first - how to run Update-Database for production database
How to delete and recreate from scratch an existing EF Code First database
注意: 我是从记忆中写的,如果你有问题让我知道,我会仔细检查。 另外,我对此的了解来自EF的稍微旧版本,因为我最近没有做太多工作,但我怀疑已经发生了很大变化。
据我所知,如果你想...... a)保持数据库, b)清理项目迁移, c)使2'匹配',同步:
请执行下列操作:
- 删除迁移文件夹(您的项目)
- 运行Add-Migration Initial
- 然后应该添加一个迁移
- 注意:它是安全的,但在下一步之前进行备份,更改连接字符串等
- 运行Update-Database -Script
- 不更新数据库但创建SQL脚本,包括迁移表
- 找到INSERT INTO [__MigrationHistory]
记录,只需运行那些(在你的数据库上),将它们插入数据库
...然后再次使用Add-Migration
进行测试,看看它是否会产生任何结果,不应该产生新的迁移,空的迁移。
请仔细阅读上面的第一个链接,并根据需要调整方法。
我确信可能会有更简单,更短的方法(通过PM控制台),但目前还没有意识到这一点。
想知道“最终”会持续多久?
使用:
Add-Migration Initial
删除迁移文件夹后
打开你的数据库。
清除表__MigrationHistory
删除文件夹中的迁移
运行Add-Migration MigrationName
以上是关于如何清理并为现有数据库生成新的迁移?的主要内容,如果未能解决你的问题,请参考以下文章