Использование консоли 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
чтобы использовать весь код для миграции первой команды
Пример:
Официальный документ можно найти здесь