В Entity Framework 6 мне нужно получить сценарий SQL для конкретного файла миграции, и я уже обновил базу данных. Я обнаружил, что в команде update-database я могу добавить параметр сценария для экспорта миграции в SQL, но я уже обновил базу данных. Я нашел в Entity Framework Core команду под названием Script-Migration с именем сценария в качестве аргумента. Есть ли подобная команда в Entity framework?
Я также попробовал предложение «Команда обновления базы данных», но у меня был пустой файл SQL.





Да, вы можете сгенерировать миграционный SQL следующим образом:
Update-Database -Script -SourceMigration: <pointFromWichYouWantToStartWithGeneration> -TargetMigration: <pointWhereToEndWithGeneration>
Чтобы создать сценарий для всех миграций, выполните следующие действия:
Update-Database -Script -SourceMigration: $InitialDatabase
Вместо применения изменений к базе данных он сгенерирует файл сценария SQL. Поэтому вы можете сгенерировать сценарий SQL, даже если миграция уже была применена к базе данных.
Здесь вы можете найти дополнительную информацию об этом - Первые миграции кода Entity Framework - получение сценария SQL.
Run the
Update-Databasecommand but this time specify the–Scriptflag so that changes are written to a script rather than applied. We’ll also specify a source and target migration to generate the script for.
Хм, я попробовал, и он работает, как ожидалось. Я использую EF 6.2. Вы установили начало и конец миграции? Если вы используете только Update-Database -Script, это не сработает, потому что EF не знает, с чего начать генерацию.
он работает для меня, когда я удалил часть targetmigration и сохранил только исходную миграцию, в этом случае я получил файл SQL. Спасибо
Возникает та же проблема, что и у @MohamedAbdeen. Однако использование полной генерации сценария базы данных и извлечение необходимых частей у меня сработало.
Вы спасатель! Я искал более часа, и хотя моя проблема не была близка к исходному вопросу, я получил то, что хотел!
Если вы хотите сгенерировать -Script для миграции N, вы указываете -SourceMigration N-1 (предыдущая миграция) и -TargetMigration N
Если вы сейчас используете ядро .net, используйте
Script-Migration -From <PreviousMigration> -To <LastMigration>
Если вы не выполните последнюю миграцию, вы можете запустить
Script-Migration -From <PreviousMigration>
Не включайте даты перехода в название миграции.
Если имя миграции в базе данных похоже на 20210209184835_add-parent-id-to-contract, запустите в диспетчере пакетов следующее:
Script-Migration -From add-parent-id-to-contract
Вы можете запустить следующую команду из консоли диспетчера пакетов. Он сгенерирует временный файл и откроет его в VS:
Script-Migration
Я попробовал описанное выше, и это не сработало. У меня появилось сообщение, что "Целевая база данных уже имеет версию" и пустой файл sql