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

Не удается запустить первые миграции кода с помощью 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: фиксированные кавычки

Я видел похожие вопросы, но все они касались работы внутри визуальной студии, и у меня нет проблем при попытке сделать это. Какие-нибудь идеи о том, что я могу сделать? Кто-нибудь получил один из этих вариантов для работы?

4b9b3361

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