簡體   English   中英

在 Visual Studio 外使用 NuGet 包管理器控制台運行實體框架遷移

[英]Using NuGet Package Manager console outside Visual Studio to run Entity Framework Migrations

無論如何要在 Visual Studio 之外打開NuGet包管理器控制台?

我的目標是運行一些我使用EntityFramework.Migrations創建的遷移

基本上我想在沒有 Visual Studio 但有 PowerShell 2.0 和 NuGet 命令行工具的環境中運行Update-Database –Verbose命令。

最初發布的答案當時是正確的,但現在(從 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

migrate.exe 信息的鏈接已過時。 由於這篇文章對我有所幫助,因此對於偶然發現此問題的其他人來說,這是最新的:

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

簡介: 本文為您提供了有關安裝 migrate.exe 和使用命令行參數執行遷移方案的說明。 此外,還確定了常見問題。 底線使用nuget安裝EF並瀏覽到包的工具文件夾以找到exe。

這是一個 PowerShell 函數,它在包管理器控制台中執行等效於update-database ,在普通的 PowerShell 窗口中,使用 EF xxx

我在我的開發機器上從命令行使用它作為“完整構建”過程的一部分;

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

從今天開始,您可以使用dotnet ef命令來使用所有代碼優先命令遷移。
您需要通過dotnet tool install --global dotnet-ef安裝它才能使用它。

例子:

  • Update-Database

--> dotnet ef database update


  • Add-Migration AddProductReviews

--> dotnet ef migrations add AddProductReviews


  • Remove-Migration

--> dotnet ef migrations remove

官方文件可以在這里那里找到

如果您查看Nuget Faq,它會說明以下內容:

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

你肯定可以! 如 NuGet 命令行工具問題中所述,NuGet 的主要焦點是 Visual Studio,但核心 NuGet API 不依賴於 Visual Studio。 有多個 NuGet 客戶端完全在 Visual Studio 之外工作:

SharpDevelop Alpha。 (請參閱 Phil Haack 的 MvcConf 演講中的演示。)

WebMatrix 中的 ASP.NET 網頁。 (請參閱 Phil Haack 的演講中的演示。)

NuGet程序

但是對於在 Visual Studio 之外使用代碼首先遷移, 發行說明如下:

沒有 Visual Studio 之外的經驗。 Alpha 2 僅包含 Visual Studio 集成體驗。 我們還計划為 Code First 遷移提供一個命令行工具和一個 MSDeploy 提供程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM