14

Первые миграции кода работали очень хорошо для меня. У меня есть проект услуг и проект wpf. Модель находится в проекте служб, на который ссылается проект wpf. Обновление базы данных выполняется в проекте служб, но использует строку подключения из проекта wpf. Теперь я добавляю веб-проект, который также ссылается на проект службы. Итак, теперь, когда в app.config есть строка соединения, и есть один в файле web.config, какой из них он будет использовать?Первыми миграциями кода - какая строка подключения будет использоваться?

ответ

38

В моем случае приложение app.config в проекте служб игнорируется. Первые миграции кода будут использовать либо app.config из проекта WPF, либо web.config в веб-проекте, в зависимости от выбранного проекта запуска.

+1

Это ответ – Alireza

+1

@Shumii, спасибо! Вы оставили комментарии. Когда я пытался включить миграцию, у меня всегда была ошибка «Сервер не найден или недоступен. Проверьте правильность имени экземпляра и настройте SQL Server для удаленного подключения». На самом деле соединение было правильным. Проблема заключалась в том, что проект запуска решения был настроен на проект, у которого нет app.config. После запуска проекта в проект, который содержит правильный app.config, миграция работает! – Qixing

+0

Ничего себе. Даже не подумал об этом. Хорошая находка! – xximjasonxx

5

При выполнении update-database вы должны указать проект, содержащий миграции. Убедитесь, что в этом проекте есть файл app.config, который содержит правильную строку соединения.
вы можете сделать Update-Database -ConnectionStringName "MyConnectionString", и он должен работать как шарм.

+0

То, что вы сказали, является правильным и соответствует официальной документации. Однако в моем случае app.config в проекте служб игнорируется, а при указании строки подключения он говорит мне, что он не существует. Единственные строки соединения, которые он видит, находятся в app.config проекта WPF. Я предполагаю, что WPF app.config переопределяет проект проекта. Не объясняет, почему строки подключения в web.config полностью игнорируются. – Shumii

+1

вы можете установить имя строки подключения в качестве полного пространства имен '

+2

или вы можете создать свой DbContext с именем вашей строки соединения, переданным конструктору: 'public EfDbContext(): base («nameOfYourConnectionString») ' –

Смежные вопросы