【问题标题】:Code first migrations - how to display pending model changes?代码优先迁移 - 如何显示挂起的模型更改?
【发布时间】:2018-12-12 17:57:17
【问题描述】:

我正在使用代码优先迁移。在我构建新迁移之前,有没有办法在包管理器控制台中显示挂起的模型更改?

【问题讨论】:

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


    【解决方案1】:

    接受的答案告诉如何在应用到数据库之前为已经搭建好的模型更改获取 SQL。

    最初的问题是考虑模型在脚手架前的变化(即在运行下一个“add-migration”之前模型自上次“add-migration”以来的变化......)

    对于这个答案,我只想说:无论如何,脚手架可以让您预览。我的意思是,运行“添加迁移预览”或类似的东西,它将使用您感兴趣的模型更改创建脚手架迁移。然后只需从您的解决方案中删除...

    这里的重点是,当实际“正在做”可以快速撤消时,无需“预览”。有些人可能会认为从解决方案的迁移部分删除脚手架迁移版本会破坏某些东西,但不,它得到了很好的支持。

    您甚至可以测试脚手架,然后按照 Colin 在他的回答中的建议创建 sql 脚本,以获得完整的 SQL。此时仍未完成任何操作,因此如果您愿意,请删除迁移版本。

    【讨论】:

    • “预览”的重点是“生产力”并验证您的更改。我需要知道发生了什么变化,这样我才能很好地命名我的迁移。如果没有预览,我必须调用 Add-Migration 两次。此外,由于您不确切知道“添加迁移”是什么,因此您无法确定正确地“撤消”更改,并且最终可能会导致项目结构混乱,其中包含如此多的孤立文件。
    【解决方案2】:

    我不知道在构建迁移之前查看模型中的待定更改,但我想不出不使用Add-Migration 构建迁移的理由,以便可以查看待处理的更改迁移文件。无需将这些更改应用到数据库,并且可以随时删除脚手架迁移。

    一旦迁移搭建好了,如果你使用Update-Database -Script实体框架会生成一个SQL脚本而不是直接执行修改。

    您可以使用 get-help EntityFramework 在包管理器中获取有关 EntityFramework 的帮助

    您可以使用以下命令获取有关 Update-Database 命令的帮助:

    get-help Update-Database

    get-help Update-Database -detailed

    get-help Update-Database -full

    【讨论】:

    • 我不认为这是 OP 所说的,但这是我的问题,所以谢谢
    • 如果我运行此命令,我会得到 “无法更新数据库以匹配当前模型,因为有待处理的更改”。 OP 正在询问这些待定更改是什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多