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

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

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

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




Ответы (5)


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

person Scott Stafford    schedule 23.05.2012

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

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

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

person Shawn    schedule 09.09.2013
comment
Не могли бы вы обобщить ссылку в своем ответе? - person Scotty H; 14.06.2017

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

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

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 в консоли диспетчера пакетов.

person Steve Cooper    schedule 05.11.2013

На сегодняшний день вы можете использовать команду 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

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

person Hayha    schedule 18.01.2019

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

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

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

Альфа-версия SharpDevelop. (См. демонстрацию этого в выступлении Фила Хаака на MvcConf.)

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

NuGet.exe

Но для использования первой миграции кода вне Visual Studio файл примечания к выпуску говорят следующее:

Никакого опыта работы вне Visual Studio. Alpha 2 включает только интегрированный интерфейс Visual Studio. Мы также планируем предоставить инструмент командной строки и поставщика MSDeploy для миграции Code First.

person Wouter de Kort♦    schedule 26.10.2011
comment
В инструменте командной строки Nuget нет команды, которая выполняет Update-Database –Verbose. Мой вопрос заключается в том, как запускать такие сценарии PowerShell вне Visual Studio, вне консоли диспетчера пакетов! Ищу что-то вроде nuget -custom "Update-Database –Verbose"! - person Zasz; 26.10.2011
comment
@Zasz: Ты читал ответ? Вы читали примечания к выпуску пакета? Альфа-версия в настоящее время предназначена только для опыта VS = поддержка за пределами VS не предоставляется. - person Ladislav Mrnka; 26.10.2011
comment
Возможно, вам придется обновить ваш powershell (скажем, до версии 5), если ваш powershell стонет о том, что Update-Package неизвестен. - person andrew pate; 17.03.2017