Я использую подход EF6, ориентированный на модель, для разработки базы данных MS SQL с помощью «Создать базу данных из модели ...» в Visual Studio. Это генерирует sql-файл со всеми операторами drop и create.
На каком-то продуктивном этапе, когда БД заполняется записями, я не хочу, чтобы все таблицы были сброшены и созданы заново, их схема должна обновляться на месте без необходимости резервного копирования и восстановления всех записей. Вот где я обнаружил, что EF Migrations будет полезен.
Как я читал, миграции EF подходят только для подхода с кодом, так что это не то, что мне нужно.
Следующая остановка — средство сравнения схем в Visual Studio, из которого, я думаю, оно подойдет. Но, к сожалению, у меня нет двух баз данных для сравнения, я хочу сравнить существующую базу данных с новой моделью EF (или сгенерированный из нее файл SQL), чтобы получить файл SQL для развертывания только изменений таблиц.
Возможно ли это вообще, и если да, то где мне смотреть?
Generate database from model... и миграции делают то же самое — создают исходный файл SQL для создания базы данных, а затем сценарии миграции для ее обновления. То, что вы просите, это сравнение, а не миграция. Это то, что делает инструмент сравнения схем в Visual Studio или SQL Server Database Tools. Он может сравнивать базы данных, проекты баз данных или dacpac-файлы друг с другом, а также генерировать/применять различия.
Вы можете создавать файлы dacpac из проекта базы данных в Visual Studio или из активной базы данных в SSMS.


Для этого нет инструмента EF от Microsoft, не похожего на то, что они создали для проектов SQL и dacpacs.
У нас была аналогичная потребность в обеспечении того, чтобы производственные схемы не отличались от ошибок времени выполнения, поэтому я написал один: https://github.com/reckface/EntityFramework.Verify
Это рассматривается в этом вопросе Обзор кода. Он не генерирует никакого SQL для исправления различий, но уведомляет вас о различиях.
попробуйте использовать Разработчик сущностей Devart, он прост в использовании и позволяет сравнивать модели EF с базой данных. Я использую его более 3 лет и работает как шарм.
Тогда вообще не используйте EF для создания схемы. Вы не можете сравнить схему базы данных с файл, потому что файл может вносить любые изменения. Вы не будете знать, как будет выглядеть конечная база данных какие, пока не запустите скрипт до конца.