在Visual Studio外部使用NuGet Package Manager控制台来运行实体框架迁移

时间:2011-10-26 13:59:02

标签: visual-studio-2010 entity-framework-4 nuget ef-migrations

无论如何在Visual Studio外部打开NuGet程序包管理器控制台?

我的目标是运行一些我使用EntityFramework.Migrations

创建的迁移

基本上我想在没有visual studio的环境中运行Update-Database –Verbose命令,但确实有PowerShell 2.0和NuGet命令行工具。

5 个答案:

答案 0 :(得分:11)

当时发布的原始答案是正确的,但现在(截至4.3)有一个migrate.exe,因此您不需要nuget或powershell:

packages\EntityFramework.4.3.1\tools\migrate.exe

请参阅http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-released.aspx

答案 1 :(得分:7)

migrate.exe信息的链接已过时。由于这篇文章对我有帮助,这是其他人偶然发现的最新消息:

http://msdn.microsoft.com/en-us/data/jj618307.aspx

摘要:本文为您提供有关安装migrate.exe并使用命令行参数执行迁移方案的说明。此外,还确定了常见问题。底线用nuget安装EF并浏览到包的tools文件夹以找到exe。

答案 2 :(得分:2)

这是一个PowerShell函数,它使用EF x.x.x在普通的PowerShell窗口中与Package Manager控制台中的update-database相当。

我在命令行中使用它作为我的开发机器上“完整构建”过程的一部分;

function Update-Database($solutionDir, $projectBinDir, $assemblyName, $appConfigFile)
{
    $efMigrateExe = "$solutionDir\packages\EntityFramework.*\tools\migrate.exe"
    Write-Host "Updating Entity Framework Database"
    Write-Host "    Migrate.exe at $efMigrateExe"
    Write-Host "    EF project binary at $projectBinDir"
    Write-Host "    EF config at $appConfigFile"
    . "$efMigrateExe" "$assemblyName" /startupConfigurationFile="$appConfigFile" /startupDirectory="$projectBinDir"
}

参数是;

$solutionDir - 您的解决方案所在的目录; packages文件夹的父级。 $projectBinDir - 包含<something>\bin\debug程序集的DbContext目录。 $assemblyName - 汇编文件的名称,例如MyEfProject.dll appConfigFile - 包含连接字符串等的app.configweb.config文件的名称。相当于在程序包管理器控制台中使用-StartupProjectName

答案 3 :(得分:1)

如果您查看Nuget Faq,请说明以下内容:

  

我可以在Visual Studio之外使用NuGet吗?

     

你确定可以!如上所述   关于NuGet命令行工具的问题,主要关注点   NuGet是Visual Studio,但核心NuGet API没有依赖关系   视觉工作室。有多个NuGet客户端可以完全运行   在Visual Studio之外:

     

SharpDevelop Alpha。 (请参阅Phil Haack的MvcConf演讲中的演示。)

     

WebMatrix中的ASP.NET网页。 (请参阅Phil Haack的演讲中的演示。)

     

NuGet.exe

但是为了在Visual Studio之外使用代码首次迁移,release notes说出以下内容:

  

没有Visual-Studio以外的体验。 Alpha 2仅包括   Visual Studio集成体验。我们还计划提供一个命令   用于代码优先迁移的行工具和MSDeploy提供程序。

答案 4 :(得分:0)

从今天开始,您可以使用dotnet ef命令来使用所有代码优先命令迁移

示例:

  • Update-Database

    -> dotnet ef database update


  • Add-Migration AddProductReviews

    -> dotnet ef migrations add AddProductReviews


  • Remove-Migration

    -> dotnet ef migrations remove

Official document can be found here