【问题标题】:Merging migration entries in Entity Framework在实体框架中合并迁移条目
【发布时间】:2015-03-07 15:12:18
【问题描述】:

我有一个 Entity Framework 6 CF 项目,该项目已经进行了一些迁移。

模型现在已经稳定,不需要保留已经存在的迁移历史。

有没有办法重置模型并将所有迁移命令合并到初始迁移中?

例如,第一次迁移添加了一个列,而第二次迁移添加了一个唯一的非聚集索引。我现在想直接在 OnModelCreating 中查看所有这些更改,而不是在单独的迁移中。

【问题讨论】:

    标签: c# .net entity-framework entity-framework-6 entity-framework-migrations


    【解决方案1】:

    迁移同时具有UpDown。您始终可以通过拆除迁移然后添加新迁移来重新构建您的应用程序。 Down 进程不会更改您的模型,只会更改数据库。使用Update-Database -Target:migrationTargetNameUpdate-Database -TargetMigration:migrationNumber

    如果您想要一个从没有数据库开始并以您当前模型结束的迁移,您可以使用Update-Database -TargetMigration:0 删除所有迁移。最好先关闭数据库,然后运行 ​​Update-Database 作为测试,以验证数据库更改是否全部同步。

    请记住,如果您将迁移拆分到 0,然后运行 ​​Add-Migration,您将需要非常仔细地查看生成的脚手架,因为它可能与增量更改大不相同。

    【讨论】:

    • 由于我对术语不熟悉,这里是我目前所理解的。将数据库降级为迁移0,将撤消所有Ups,执行所有Downs 并将DB 重置为InitialMigrationUpdate-Database 将如何同步到当前的数据库模型是我没有得到的。它会自动生成一个UpDown,这样生成的模型就是我在拆除它们之前开始使用的模型吗?
    • 一旦您处于 Migration 0,然后您想要运行 Add-Migration 以创建一个从当前状态 (0) 开始的新迁移,并为您当前的模型搭建脚手架。运行 Update-Database 运行所有 Up 语句,这对于有很多迁移时的测试很有用。
    • 我可能没有清楚地表达我的意图。我们目前有x 的迁移次数,例如,综合哈希为abc。我想丢失所有Downs 并且只有一个Up 或模型本身更新,使得哈希变为abc。所有高于初始0 的迁移记录都应该被丢弃,就好像我们刚刚在哈希xyz 的新模型上第一次运行InitialMigration
    • 不确定如何清楚地解释这一点,但它应该好像当前模型应该反映所有迁移的影响但没有迁移:)。简单地跟踪所有迁移步骤,同时保留所有当前迁移的结果模型。数据丢失当然不是考虑因素。
    • 单次迁移会和上一组迁移类似,但不一定100%相同;它应该更有效,无需修改表格组。
    猜你喜欢
    • 2017-04-06
    • 2015-05-11
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    相关资源
    最近更新 更多