【问题标题】:EF Core Migrations - how to modify the previous migrations?EF Core Migrations - 如何修改以前的迁移?
【发布时间】:2019-11-20 10:58:41
【问题描述】:

我有一个关于在EF Core 中编辑迁移文件的问题。

示例:我创建了 3 个使用单独迁移的表:AddTable1AddTable2AddTable3

几天后,我决定将Table1status 列的类型更改为int 而不是string

更新AddTable1迁移文件、删除数据库并执行update-database命令后,该列仍然定义为string类型。

我注意到尽管我编辑了Table1 迁移文件,但所有.Designer.cs 文件仍然使用string 类型作为status 列。

我复制了AppDbContextModelSnapshot.cs 文件的内容,并手动更新了所有迁移的所有.Designer.cs 文件(注意:源文件和.Designer.cs 文件中的方法名称不同)。

这很有帮助。我确定这不是使用迁移的推荐方式。

我的问题是:是否有一个命令可以执行我所做的 - '重置' '.Designer.cs' 文件?

如果没有,如何制作? :)

【问题讨论】:

    标签: entity-framework-core entity-framework-migrations ef-core-2.0 ef-core-2.1 ef-core-2.2


    【解决方案1】:

    将迁移视为 Git 提交。一旦您与其他团队成员共享了之前的提交(或者在我们的例子中,将迁移应用到数据库),您就不会重写以前的提交。相反,您可以创建带有其他更改的新迁移。

    如果您尚未应用迁移或与队友共享,您可以将其移除并重新搭建:

    Remove-Migration
    Add-Migration FixedUpMigration
    

    请参阅EF Core Migrations 文档了解基本用法。

    【讨论】:

    • 我知道。但是我没有团队成员。我正在从头开始构建一个项目。
    • dbContext.Database.EnsureDeleted()EnsureCreated() 在早期开发过程中运行良好。请参阅 github.com/aspnet/EntityFrameworkCore/issues/… 了解另一个疯狂的想法。
    • @denis_n 我认为手动合并迁移是一个可行的解决方案,尽管很乏味。我为每个 rtm 版本保留一个迁移,这就是我不时这样做的方式。或者,您可以像 bricelam 指出的那样删除迁移并重新添加它们。
    猜你喜欢
    • 1970-01-01
    • 2021-05-15
    • 2021-11-23
    • 2021-07-15
    • 2022-11-11
    • 2021-01-29
    • 2018-10-02
    • 1970-01-01
    • 2021-03-21
    相关资源
    最近更新 更多