【问题标题】:How can I run an Entity Framework 7 migration on a remote database using Powershell?如何使用 Powershell 在远程数据库上运行 Entity Framework 7 迁移?
【发布时间】:2018-02-19 19:11:25
【问题描述】:

在独立的实体框架 7 项目中(注意,不是具有可能使用命令 DNX 的实体上下文的 MVC 项目),如何使用 Powershell 在远程数据库上运行迁移?

我目前正在使用 Entity Framework 7.0.0-rc1-final 和 Visual Studio 2015 (14.0.23107.0)。

【问题讨论】:

    标签: entity-framework powershell visual-studio-2015


    【解决方案1】:

    目前,您无法使用纯 PowerShell 来执行此操作,因为像 migrate.exe 这样的实用程序尚不存在,并且无法导入 EF PS 模块,因为它们需要包管理器 PowerShell 主机。

    以下是如何在 EF7 中更新远程数据库的一些想法:

    您可以做的一件事是像往常一样使用 VS 中的包管理器控制台命令来更新远程数据库。您可以创建具有远程数据库连接字符串的第二个上下文,并使用 update-database 命令指定要使用的上下文。这些命令需要 EF7 中的以下包: https://www.nuget.org/packages/EntityFramework.Commands/。 我已经在一个类库项目中成功地做到了。

    另一种解决方案是通过创建 DNX 项目而不是经典项目来使用 DNX 命令。 DNX 项目不仅适用于网站,它只是另一种类型的项目。这是一个显示如何创建控制台应用程序 DNX 项目的链接: http://docs.asp.net/en/latest/dnx/console.html。 因此,对于这种类型的项目,您可以使用您似乎知道的提供的 DNX 命令。

    我希望这会有所帮助。如果您更详细地描述您的情况和最终目标,也许我们可以提供更多帮助。

    【讨论】:

    • 目前您无法使用纯 PowerShell 来执行此操作,因为 migrate.exe 之类的实用程序尚不存在,并且无法导入 EF PS 模块,因为它们需要包管理器 PowerShell 主机。我没有意识到 EF PS 命令在 VS 包管理器 PS 主机之外无法使用。
    • 您可以做的一件事是像往常一样使用 VS 中的包管理器控制台命令来更新远程数据库。您可以创建具有远程数据库连接字符串的第二个上下文,并使用 update-database 命令指定要使用的上下文。这些命令需要 EF7 中的以下包:nuget.org/packages/EntityFramework.Commands。我已经在一个类库项目中成功地做到了这一点。 我将尝试沿着这条路线走下去,因为我认为这将实现我的目标,即能够使用 powershell 以不同的凭据方案定位单个远程数据库
    • @StampyTurtle 我很高兴这个想法有帮助。
    • 感谢您的赏金 :)
    【解决方案2】:

    作为评论回答太长,所以在此处添加...

    你看过这个article 和答案中的链接吗?

    从那个答案

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

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

    可能对本问题的读者有所帮助的是您尝试过的方法、无效的方法以及可能有助于解决您的问题的其他信息。

    【讨论】:

      猜你喜欢
      • 2015-08-27
      • 1970-01-01
      • 2017-12-24
      • 2016-11-11
      • 1970-01-01
      • 2017-04-26
      • 2011-01-12
      • 2015-11-07
      • 2017-08-10
      相关资源
      最近更新 更多