Как сделать так, чтобы миграции Entity-Framework использовали преобразования web.config?

Когда вы применяете любые команды, такие как

  • 'обновление базы данных'
  • 'добавить-миграция'

EF использует строку подключения в вашем основном файле web.config.

даже если вы настроили web.debug.config и web.release.config с преобразованием xml

Это означает, что я должен войти и рискнуть забыть изменить свое истинное web.config обратно до выпуска.


person Doug Chamberlain    schedule 04.03.2014    source источник
comment
Существуют параметры для Update-Database, называемые -ConnectionString и -ConnectionStringName. Если вы хотите указать саму строку подключения, вы можете использовать параметр -ConnectionString и просто вставить значение. Либо так, либо вы можете поместить все свои строки подключения в файл конфигурации и использовать -ConnectionStringName   -  person Dismissile    schedule 04.03.2014


Ответы (1)


Я думаю, что единственный способ запустить преобразования web.config локально — это использовать MSBuild со следующими параметрами, где [YourTransformationConfiguration] — имя используемой конфигурации, например Отладка или выпуск:

msbuild PathToProject /T:Package /P:Configuration=[YourTransformationConfiguration] /P:AutoParameterizationWebConfigConnectionStrings=False

Вывод которого будет доступен по адресу:

[ProjectFolder]\obj\[YourTransformationConfiguration]\Package\PackageTmp

Отсюда вы можете запустить файл migrate.exe в своей сборке, что аналогично запуску сценария PowerShell Update-Database. Если вы использовали Nuget, он будет находиться в папке tools пакета EntityFramework. У меня были некоторые проблемы с запуском и запуском, но здесь есть полезный ответ Stack Overflow:

Запуск Migrate.exe для работы

person Rob Bell    schedule 05.03.2014