Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 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

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