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

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

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

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

Ответы [ 5 ]

11 голосов
/ 23 мая 2012

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

7 голосов
/ 09 сентября 2013

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

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

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

2 голосов
/ 05 ноября 2013

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

1 голос
/ 26 октября 2011

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

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

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

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

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

NuGet.exe

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

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

0 голосов
/ 18 января 2019

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

Пример:

  • Update-Database

    -> dotnet ef database update


  • Add-Migration AddProductReviews

    -> dotnet ef migrations add AddProductReviews


  • Remove-Migration

    -> dotnet ef migrations remove

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...