Не удается запустить первые миграции кода с помощью migrate.exe
Я пытаюсь обновить базу данных в тестовой системе. Когда я запускаю update-database
в визуальной студии, все работает так, как ожидалось.
Когда я развертываю, а затем пытаюсь запустить на тестовой машине:
Migrate.exe CodeFirst.dll /startupConfigurationFile="..\web.config"
Я получаю:
никакая строка соединения с именем xxx не может быть найдена в файле конфигурации приложения
... хотя есть строка соединения с этим именем в файле web.config. Существует только один файл .config, нет файла конфигурации для DLL, с которым я сталкиваюсь
Я попытался объявить строку подключения вручную:
Migrate.exe CodeFirst.dll /connectionString="Data Source=192.168...;Initial Catalog=Database;" /connectionProviderName="System.Data.SqlClient"
но по какой-то причине по-прежнему выдавала ту же ошибку... Не игнорирует ли строку подключения, которую я передаю, и пытаюсь снова найти ее? Зачем это делать?
, но это дало мне действительно странную ошибку:
Тип конфигурации миграции "Источник = 192.168... не может быть найденный в сборке CodeFirst.dll Я задавался вопросом, не связано ли это с пробелами, поэтому я попытался изменить" источник данных "на" сервер "и" Начальный каталог "на" базу данных", но это не помогло.
edit: фиксированные кавычки
Я видел похожие вопросы, но все они касались работы внутри визуальной студии, и у меня нет проблем при попытке сделать это. Какие-нибудь идеи о том, что я могу сделать? Кто-нибудь получил один из этих вариантов для работы?
Ответы
Ответ 1
Наконец, это получилось для работы с инфраструктурой Entity 6.1.3. Я не уверен, действительно ли версия имеет значение, но мы закончили загрузку кода и отладку.
Что действительно имело значение, так это использование полного пути в обоих требуемых путях... Надеюсь, что это может помочь кому-то!
migrate CodeFirst.dll Configuration /startUpDirectory:"C:\src\app\CodeFirst\bin\Debug" /startUpConfigurationFile:"C:\src\app\CodeFirst\bin\CodeFirst.dll.config"
Я потянулся к команде EF, и, судя по всему, в EF7 все будет лучше: https://github.com/aspnet/EntityFramework/issues/2974
Ответ 2
Те из нас, кто только начинает использовать этот инструмент, могут найти этот полезный PowerShell script - он содержит некоторые значения по умолчанию для некоторых распространенных случаев использования:
Param(
[string]$DbConnectionString,
[string]$StartUpDirectory,
[string]$DataModelDllName,
[string]$StartUpConfigurationFile = "$StartUpDirectory\$DataModelDllName.config",
[string]$ConfigurationClassName = "Configuration",
[string]$ConnectionProviderName = "System.Data.SqlClient",
[string]$MigrateToolPath = "$PSScriptRoot\migrate.exe"
)
& $MigrateToolPath $DataModelDllName $ConfigurationClassName /startUpConfigurationFile=$StartUpConfigurationFile /connectionString=$DbConnectionString /connectionProviderName=$ConnectionProviderName /startUpDirectory=$StartUpDirectory