Использование консоли NuGet Package Manager вне Visual Studio для запуска миграции Entity Framework

Есть ли способ открыть консоль диспетчера пакетов NuGet за пределами Visual Studio?

Моя цель - запустить некоторые миграции, которые я создал с помощью EntityFramework.Migrations

По сути, я хочу запустить команду Update-Database –Verbose в среде, в которой нет Visual Studio, но есть PowerShell 2.0 и инструмент командной строки NuGet.

Ответы

Ответ 1

Исходный ответ был правильным в то время, но теперь (начиная с версии 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

Ответ 2

Ссылка на информацию о migrate.exe устарела. Поскольку этот пост помог мне здесь, это последнее для других людей, которые наткнулись на это:

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

Резюме. В статье приведены инструкции по установке migrate.exe и использованию аргументов командной строки для выполнения вашего сценария миграции. Кроме того, выявляются общие проблемы. В нижней строке установите EF с помощью nuget и перейдите в папку инструментов пакета, чтобы найти exe.

Ответ 3

Здесь функция PowerShell, которая выполняет эквивалент update-database в консоли диспетчера пакетов, из обычного окна PowerShell, используя EF x.x.x.

Я использую его из командной строки как часть процесса "полной сборки" на моей машине dev;

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.config или web.config, который содержит строки подключения и т.д. Эквивалентен использованию -StartupProjectName в консоли диспетчера пакетов.

Ответ 4

Если вы посмотрите на Nuget Faq, в нем указано следующее:

Можно ли использовать NuGet вне Visual Studio?

Вы уверены, что можете! Как обсуждалось в вопросе о инструментах командной строки для NuGet основное внимание уделяется NuGet - это Visual Studio, но основной NuGet API не имеет зависимости от Visual Studio. Существует несколько клиентов NuGet, которые работают полностью вне Visual Studio:

SharpDevelop Alpha. (См. Демонстрацию этого в разговоре Фила Хаака MvcConf.)

Веб-страницы ASP.NET в WebMatrix. (См. Демонстрацию этого в разговоре Фила Хаака.)

NuGet.exe

Но для использования первых переходов кода вне визуальной студии примечания к выпуску скажите следующее:

Отсутствие опыта вне Visual Studio. Alpha 2 включает только Интегрированный опыт Visual Studio. Мы также планируем предоставить команду line и поставщик MSDeploy для Первых Миграций Кодов.

Ответ 5

На сегодняшний день вы можете использовать команду dotnet ef чтобы использовать весь код для миграции первой команды

Пример:

  • Update-Database

    dotnet ef database update


  • Add-Migration AddProductReviews

    dotnet ef migrations add AddProductReviews


  • Remove-Migration

    dotnet ef migrations remove

Официальный документ можно найти здесь