Получить файл SQL для конкретной миграции в Entity Framework 6 C#

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

Я также попробовал предложение «Команда обновления базы данных», но у меня был пустой файл SQL.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
13
0
10 540
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Да, вы можете сгенерировать миграционный SQL следующим образом:

Update-Database -Script -SourceMigration: <pointFromWichYouWantToStartWithGeneration> -TargetMigration: <pointWhereToEndWithGeneration>

Чтобы создать сценарий для всех миграций, выполните следующие действия:

Update-Database -Script -SourceMigration: $InitialDatabase

Вместо применения изменений к базе данных он сгенерирует файл сценария SQL. Поэтому вы можете сгенерировать сценарий SQL, даже если миграция уже была применена к базе данных.

Здесь вы можете найти дополнительную информацию об этом - Первые миграции кода Entity Framework - получение сценария SQL.

Run the Update-Database command but this time specify the –Script flag 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.

Я попробовал описанное выше, и это не сработало. У меня появилось сообщение, что "Целевая база данных уже имеет версию" и пустой файл sql

Mohamed Abdeen 29.03.2018 11:54

Хм, я попробовал, и он работает, как ожидалось. Я использую EF 6.2. Вы установили начало и конец миграции? Если вы используете только Update-Database -Script, это не сработает, потому что EF не знает, с чего начать генерацию.

ChW 29.03.2018 12:00

он работает для меня, когда я удалил часть targetmigration и сохранил только исходную миграцию, в этом случае я получил файл SQL. Спасибо

Mohamed Abdeen 29.03.2018 12:11

Возникает та же проблема, что и у @MohamedAbdeen. Однако использование полной генерации сценария базы данных и извлечение необходимых частей у меня сработало.

Tristan Hudson 16.01.2019 11:19

Вы спасатель! Я искал более часа, и хотя моя проблема не была близка к исходному вопросу, я получил то, что хотел!

Sotiris Zegiannis 06.02.2019 15:07

Если вы хотите сгенерировать -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

Другие вопросы по теме