【问题标题】:How to run Code-First Migrations from a psake build?如何从 psake 构建运行代码优先迁移?
【发布时间】:2012-09-02 18:32:29
【问题描述】:

我可以从包管理器控制台输入Update-DatabaseEnable-Migrations 等,它工作正常。

如果我需要在常规的 powershell 会话中或在 psake 构建文件中执行相同的操作,那么我该怎么做?

我尝试从 packages 目录导入模块 EntityFramework.5.0.0\tools\EntityFramework.psm1,我确实得到了 Update-DatabaseEnable-Migrations 函数,但我无法提供他们的参数 - 他们需要一个项目、源代码和另外 6 个 - 那里没有任何文档。我不能在我们的 CI 链中的某些机器上自动部署数据库吗?

【问题讨论】:

    标签: entity-framework powershell entity-framework-migrations psake


    【解决方案1】:

    将模块导入 PowerShell 控制台的问题在于,我认为该模块希望在具有可用 Visual Studio DTE 对象的上下文中运行。该环境是 NuGet 包管理器控制台。这个问题之前已经提过。看看这个blog post 和这个SO question

    这个blog post shows how to write code that does migrations

    【讨论】:

    • 您好,感谢您的回答,那么从构建脚本运行迁移的唯一方法是生成 SQL 并使用它吗?
    • @Zasz 我不知道这是否是唯一的方法,但它肯定是一种可行的方法。查看这两篇博文:thedatafarm.com/blog/data-access/…romiller.com/2012/02/09/running-scripting-migrations-from-code
    • 太棒了~!第二个链接帖子值得更多认可——我正要编写自己的工具,在查看第一个链接后进行迁移,我可以从构建脚本中调用它——第二个链接将我指向已经开发的工具 :)
    • @Zasz 好建议。我把那个链接放在答案中。
    【解决方案2】:

    使用 EntityFramework NuGet 包中的migrate.exe

    https://stackoverflow.com/a/14139229/991267

    【讨论】:

    • 您可以在命令行上从 migrate.exe 更新数据库,但不能通过这种方式启用迁移(或添加迁移)。
    猜你喜欢
    • 2021-03-26
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多