Я добавляю новую миграцию, но это сообщение показывает:
Невозможно сгенерировать явную миграцию, так как ожидают следующие явные миграции: [201203170856167_left]. Примените ожидающие явные миграции перед попыткой создать новую явную миграцию.
Может кто-нибудь помочь мне?
entity-framework
ef-migrations
Номан Саид
источник
источник
Ответы:
Он сообщает вам, что в вашем приложении есть необработанная миграция, и ее необходимо запустить,
Update-Database
прежде чем вы сможете добавить еще одну миграцию.источник
-StartupProject ContentHub.Database
Update-Database
дает> Невозможно обновить базу данных для соответствия текущей модели из-за ожидающих измененийУ меня такая же проблема. По-видимому, entity framework генерирует эту ошибку, когда не может подключиться к базе данных. Поэтому убедитесь, что у вас есть доступ к нему, прежде чем искать другие проблемы.
источник
Вам либо нужно запустить «update-database» из консоли диспетчера пакетов, чтобы отправить изменения в базу данных, либо вы можете удалить файл ожидающей миграции ([201203170856167_left]) из папки Migrations, а затем повторно запустить «add-migration» в создайте новую миграцию на основе ваших правок.
источник
Эта ошибка также может означать, что миграции больше не распознаются. Это случилось со мной после того, как я изменил значение ContextKey в Migrations.Configuration. Решением было просто обновить ContextKey в таблице базы данных «__MigrationHistory» (или, я думаю, вернуть значение в классе Configuration). ContextKey и пространство имен в вашем приложении должны совпадать.
источник
1. Строка подключения / разрешения для подключения
Еще раз проверьте строку подключения.
Убедитесь, что у пользователя, с которым вы подключаетесь, все еще есть разрешение на чтение
[__MigrationHistory]
и разрешение на редактирование схемы.Вы также можете попробовать изменить строку подключения в файле конфигурации приложения или веб-сайта, чтобы использовать встроенную безопасность (Windows Auth) для запуска команды добавления-миграции от имени себя. .
Например:
Эта строка подключения будет помещена в файл App.config проекта, в котором расположен DbContext.
2. StartUp Project
Вы можете указать проект StartUp в командной строке или можете щелкнуть проект правой кнопкой мыши с папкой
DbContext
,Configuration
и Migrations и выбрать Set as StartUp project . Я серьезно, это действительно может помочь.источник
Integrated Security
исправление отлично работает!Имел ту же проблему и смог решить с некоторыми подсказками из приведенных выше ответов:
Используйте «update-database -verbose» в консоли диспетчера пакетов, чтобы получить более конкретную информацию, к которой пытается подключиться миграция. (Помогло в моем случае узнать, что мой стартап-проект настроен неправильно ...)
источник
Если вы еще не использовали,
Update-Database
вы можете просто удалить его. Если вы запустили обновление, откатите его, используяUpdate-Database -TargetMigration "NameOfPreviousMigration"
, а затем удалите.Ссылка: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/
Я скопировал этот текст прямо отсюда: Как мне отменить последнюю команду Add-Migration?
источник
При возникновении этой проблемы попробуйте добавить параметры в командлет add-migration. Например, указание запускаемого проекта, а также имени строки подключения может помочь EF найти вашу целевую базу данных.
Куда:
Delta_Defect_0973 - это имя вашей миграции
your.namespace.ContextClassName - это имя вашего класса конфигурации в папке миграции с префиксом полного пространства имен.
DeltaProject - это имя вашего основного проекта с файлом web.config или app.config.
DeltaSQL - это имя строки подключения, определенной в файле web.config или app.config.
источник
Эта ошибка означает, что необходимо выполнить отложенные миграции, прежде чем вы сможете выполнить еще одну явную миграцию. Вы можете выбрать
После этого вы можете снова запустить «Add-Migration ...»
Надеюсь, поможет
источник
Всего два цента:
Мой сценарий:
Решение:
Чтобы обойти это, я просто предоставил более явные параметры:
Я считаю, что вы можете установить настройку в своей папке app.config, чтобы позволить вам использовать это поведение по умолчанию, чтобы вам не приходилось каждый раз указывать явные параметры. Однако я не уверен, как это сделать.
источник
-ConnectionStringName
является альтернативой этому и будет извлекать строку подключения из вашей конфигурации по имениЕсть двусмысленность и так ошибка. Лучший способ - исключить текущий файл миграции и создать новый файл миграции ( добавить-миграцию ), а затем скопировать содержимое новой миграции в исключенный файл, снова включить его и запустить команду update-database .
источник
update-database
выполнилadd-migration
команду, а затем повторил ее, и она сработалаЯ решил такую же проблему:
источник
У меня были те же проблемы, и я смог решить их только с помощью Add-Migration 'MigrationName' -Force
С -Force является важной частью.
источник
В моей локальной базе данных не было ни
__MigrationHistory
заполненных, ни существующих. Я вручную создал таблицу, а затем перенес данные в этой таблице из PROD в мою локальную базу данных. Это заставило VS подумать, что миграции были применены (что так и было).источник
Совет: всегда полезно использовать
-Script
переключатель для команд миграции, если вы не уверены. Это также действительно помогает понять, чтоUpdate-Database
самом деле происходит.Я запускаю следующее, чтобы обновить базу данных, а затем получаю сценарий, который можно применить вручную (или просто запустить его снова без тега -Script).
Ибо
Update-Database
я бы запустил следующее:Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive
куда
SQL_AzureLive
указанная строка подключения в моем config.Затем я могу проверить, выглядит ли SQL правильно, применить его и готово. Как говорили многие другие, если строка подключения неверна или недействительна, вы получите эту ошибку.
источник
Для меня я удалил файл миграции (в вашем случае «201203170856167_left») из
Migrations
папки, а затем выполнил следующую команду в консоли диспетчера пакетовисточник
Сценарий
Проблема
После обновления с мастера я запускаю «Add-Migration my_migration_name», но получаю следующую ошибку:
Итак, я запускаю «Update-Database» и получаю следующую ошибку:
Решение
На этом этапе повторный запуск «Add-Migration my_migration_name» решил мою проблему. Моя теория состоит в том, что при запуске «Update-Database» все было в том состоянии, в котором оно было необходимо для работы «Add-Migration».
источник
Я тоже столкнулся с этой проблемой. Это произошло, когда я создал новую БД, и у меня были отложенные изменения для моей миграции БД с первым кодом, и я попытался запустить команду «Update-Database». Решение: Выполните команду «Add-Migration -MigrationName», чтобы создать новую миграцию для новой БД. Затем запустите команду «Обновление-База данных».
источник
У меня тоже была эта проблема с базой данных, которая, как я знал, была актуальной при запуске Add-Migration. Решается простым повторным запуском команды Add-Migration. Подозрение на проблему с подключением, как было предложено Робином Дорбеллом выше.
источник
Это произошло, когда я внезапно переименовал класс старой миграции, который уже существует в db. Я проверил историю VCS, определил это и переименовал обратно. Потом все заработало.
источник
Я поступил иначе. Я полностью отбросил базу данных и снова запустил update-database в vs.
источник
У меня была проблема попроще. VS ошибочно сообщил об этой ошибке, когда у меня было VPN-соединение с клиентским сайтом, подключенным на моей рабочей станции. Проблема заключалась в том, что защита СУБД была настроена на прием запросов только с моего реального локального IP. Простое отключение VPN решило проблему.
источник
В моем случае я забыл добавить свой IP-адрес в правила брандмауэра в Azure, поскольку мне не удалось подключиться к базе данных, я получал эту ошибку. Поэтому специально для моего случая я добавил свой IP-адрес в правила брандмауэра базы данных в Azure, и все это сработало. Кроме того, это может быть проблема с прокси / подключением к Интернету / паролем имени пользователя БД / строкой подключения к БД и т. Д. ИЛИ, очевидно, у вас могут быть ожидающие миграции, для которых вам нужно запустить команду Update-Database.
источник
Исторически я всегда решал эту проблему, удаляя ожидающие миграции, или, если оставалась только 1, и это было наиболее желательно, используя
-f
для ее воссоздания.В последнее время у меня это перестало работать.
Когда это произошло в первый раз, я перезапустил Visual Studio, и тогда я смог продолжить.
Во второй раз это сработало только после того, как я запустил Очистку проекта. Это было почти так, как если бы ожидающие миграции были сохранены, несмотря на удаление всех файлов из проводника.
источник
Для многих это не ответ, но EF устранит эту ошибку, если не сможет подключиться к БД. Если вы работаете из дома, как я, убедитесь, что вы все еще подключены к своей VPN!
источник
У меня возникла точно такая же проблема сразу после возврата от миграции к другой.
В моем случае я «нацелен на миграцию» с «migration06» на «migration04».
Мне нужно было удалить «migration0» 6, а затем я смог принудительно создать «migration05». По сути, это означает, что вам нужно просто сохранить следующую миграцию после целевой.
источник
В моем случае (с использованием MS Visual Studio) это было так же просто, как перезапустить Visual Studio.
источник