Адд-миграция не работает с удаленными базами данных sql-сервера на виртуальном хостинге - PullRequest
5 голосов
/ 08 ноября 2011

Похоже, CodeFirst перестает выполнять свою домашнюю работу, когда у него нет полного контроля над базой данных (я полагаю). Сценарий - это веб-сайт, размещенный на Arvixe.com (или, я полагаю, на любом другом сервере общего хостинга), где мне приходится создавать базы данных только из их панели управления (а НЕ с помощью Sql Server Management Studio, просто чтобы сказать ...). Создав пустую базу данных, я регистрирую соединение на веб-сайте и использую его для создания базы данных из объектов poco, например:

add -igration m1 -targetdatabase myconnection

Это правильно генерирует мой ПЕРВЫЙ переход, который я могу применить без проблем с

update-database -targetdatabase myconnection

Первая проблема, не слишком важная, заключается в том, что, поскольку база данных существует, она НЕ будет выдавать команду Seed, поэтому мне приходится вставлять свои первые записи вручную, но это не большая проблема.

Затем я меняю свои объекты poco, и мне нужно обновить базу данных, но когда я выдаю ДРУГОЙ

add -igration m2 -targetdatabase myconnection

выдает ошибку:

System.Data.Entity.Migrations.MigrationsPendingException: не удалось сгенерировать явную миграцию, поскольку ожидаются следующие явные миграции: [201111081426466_m1]. Примените ожидающие явные миграции, прежде чем пытаться создать новую явную миграцию.

Это действительно странно, так как, если я посмотрю на базу данных, я смогу увидеть даже таблицу __MigrationHistory, но тогда, похоже, она не сможет ее распознать ...

Кто-нибудь с той же проблемой, или какой-нибудь хороший совет, где расследовать? Заранее спасибо, Андреа Биоли

1 Ответ

1 голос
/ 03 октября 2012

У меня была эта проблема.Я смог решить эту проблему, указав параметр connectionString и connectionProviderName для команд Update-Database и Add-Migration.

Если в вашем решении много проектов с несколькими файлами конфигурации,Менеджер пакетов, похоже, растерялся.В моем случае один проект был выбран в качестве проекта по умолчанию для консоли диспетчера пакетов, но вместо этого он извлекал строку подключения из начального проекта Visual Studio.

...