【问题标题】:EF Update current migration file instead of create a new oneEF 更新当前迁移文件而不是创建一个新的
【发布时间】:2016-02-16 22:42:04
【问题描述】:

我知道这违背了迁移的目的,但是对我对模型所做的每一次更改都创建一个新的迁移文件是没有意义的。

我从启用迁移开始,然后初始化迁移,Visual Studio 创建一个201502151515_initial.cs

我在 201502151515_initial.cs 文件中做了一些更改,然后去更新数据库。

然后我知道我的模型中有一些错误。 那么如果我尝试update-database 它将失败并显示此错误:

无法更新数据库以匹配当前模型,因为有 挂起的更改和自动迁移被禁用。要么写 待定模型更改为基于代码的迁移或启用自动 移民。将 DbMigrationsConfiguration.AutomaticMigrationsEnabled 设置为 true 启用自动迁移。您可以使用添加迁移 命令将挂起的模型更改写入基于代码的迁移。

如果我尝试添加迁移,那么它将为我创建另一个文件

是否要更新当前的201502151515_initial.cs 文件?

我可以手动完成,确保一切正常,这是一项艰巨的任务。 我可以删除当前文件并重新创建它,在这种情况下我与数据库不一致(因为我已经更新数据库)。 或找到更好的方法来更新当前文件。

有没有更好的方法?

【问题讨论】:

  • 您应该在生成的迁移文件中更改的唯一内容是数据操作(Sql 函数等)。如果您不喜欢 EF 生成模型差异的方式,则需要更改模型 - 实体、配置等。然后当您对这些更改感到满意时,删除未应用的迁移或运行 Add-Migration <same name, no dates> -Force 重新搭建脚手架迁移。请注意,这将完全覆盖文件。它基本上只是跳过删除并保持文件的日期部分相同。

标签: c# entity-framework entity-framework-migrations


【解决方案1】:

也许您更喜欢自动迁移?这与您正在寻找的解决方案类似。

你不需要添加迁移,只需推送到数据库

Enable-Migrations –EnableAutomaticMigrations
Update-Database

【讨论】:

  • 不幸的是,在 ASP .NET Core 1.1 Enable-Migration 中不受支持:Enable-Migrations is obsolete. Use Add-Migration to start using Migrations.
【解决方案2】:

在 dotnet core 中,它变得很容易。

只需dotnet ef migrations remove 然后dotnet ef migrations add init

【讨论】:

    猜你喜欢
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多