entity-framework - 更新 Entity Framework 中上次迁移的模型快照并重新应用它

标签 entity-framework powershell automation entity-framework-migrations

我正在使用 EF6 现有数据库的代码优先迁移,但初始 DbContext没有完全覆盖现有的模式(因为它很大)。所以有时我必须以数据库优先的方式更新模型。例如,当我需要为数据库中已经存在但未反射(reflect)在代码中的表或列进行实体映射时,我会执行以下操作:

  • 进行所有更改(添加新实体、重命名列映射或添加新属性)
  • 代表最新模型快照的脚手架迁移 stub_migration
  • 复制粘贴来自 stub_migration 的最新序列化模型到 last_migration资源文件
  • 删除 stub_migration
  • 回复 last_migration在数据库中
  • Update-Database所以模型快照在 [__MigrationHistory]表格也将更新

  • 我知道这种方法有点老套,正确的方法是留空 stub_migration但这会强制执行许多我宁愿避免的空迁移。

    查看来自 MSDN article (Option 2: Update the model snapshot in the last migration) 的类似场景我不认为有比编写 power shell 脚本、托管代码或两者更简单的方法来使其工作。但在深入研究之前,我宁愿先询问社区。
    所以我想知道:有没有一种简单的方法可以在最新的迁移中自动生成新模型快照并重新应用它?

    最佳答案

    我正在做类似的事情。我有一个大型数据库,我正在使用 VS 2013 的 EF 工具将它的小部分逆向工程到我的 DEV 环境中。该工具在单独的文件夹中创建我的 POCO 和上下文更改。我将它们移动到我的数据项目,创建一个流畅的配置,然后应用迁移(或打开自动迁移)。

    一段时间后,我想要对 TEST 或 PROD 进行一次迁移,因此我使用此处解释的技术将它们汇总为一次迁移:http://cpratt.co/migrating-production-database-with-entity-framework-code-first/#at_pco=smlwn-1.0&at_si=54ad5c7b61c48943&at_ab=per-12&at_pos=0&at_tot=1

    关于entity-framework - 更新 Entity Framework 中上次迁移的模型快照并重新应用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28879532/

    相关文章:

    entity-framework - 使用 Entity Framework ExecuteStoreQuery返回数据表

    c# - Entity Framework 添加不在数据库表中的属性时列名无效

    powershell - 如何使用从 Powershell 中选择的文件调用 Windows 资源管理器?

    c# - 如何从 C# 中的 powershell 类捕获完整的调用文本

    javascript - 自动刷新 AWS Quicksight

    .net - 不带 ActiveX 的 Internet Explorer 自动化

    entity-framework - Entity Framework - 如何在不首先检索外表行的情况下插入带有外键的表

    .net - Entity Framework 死锁和并发

    powershell - 如何创建自定义 Powershell 运算符?

    ios - 是否可以使用与 iOS 应用程序相同的初始状态来启动每个 Appium 测试?