Entity Framework: Нужно простое, чистое решение для миграции баз данных - PullRequest
3 голосов
/ 03 января 2011

Сначала я использую модель структуры объекта, и мне нужно часто выполнять миграцию базы данных,

Блок питания для генерации базы данных EF мало помогает, потому что миграция данных здесь никогда не работала.

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

Есть ли здесь какой-нибудь бесплатный инструмент, изобретенный здесь? Или это будет новая функция следующего выпуска EF?

PS: Я люблю ORM Джанго.

Ответы [ 3 ]

1 голос
/ 03 января 2011

Я сейчас использую несколько инструментов для миграции, как моделей EF, так и схем, созданных с помощью инструмента NORMA .В основном я использую инструмент ApexSQL Diff , затем запускаю сгенерированные сценарии с помощью инструмента ApexSQL Edit .С помощью инструмента Diff я сравниваю базу данных, созданную из модели, с «текущей» базой данных, чтобы создать сценарий изменения.Я использую последний, потому что он разбивает выполнение на пакеты и показывает ошибки в каждом пакете отдельно (если есть какие-либо ошибки).

В соответствующей заметке я использовал ApexSQL DataDiff инструмент для сценариев изменений в базовых данных, таких как таблицы поиска.

Я был заинтригован возможностью Приложения уровня данных в Visual Studio 2010 и SQL Server 2008 R2.Кажется, что в нем хранится описание метаданных базы данных, которая будет создана, поэтому при повторном развертывании пакета DAC он сравнивает метаданные на предмет изменений.Затем он изменяет только те части базы данных, которые действительно нуждаются в изменении.Это должно позволить использовать один пакет развертывания для обновления разных уровней редакции базы данных без необходимости использования отдельных сценариев обновления для каждой версии.Я еще не использовал это, и я полагаю, что это ограничено SQL Server 2008 R2.

1 голос
/ 03 января 2011

Была такая же проблема около 4 месяцев назад. Мы рассматривали EF, и единственной проблемой, которую мы не смогли решить, была миграция БД при использовании подхода «сначала код».

Создать новую БД из кода легко, но что, если у вас уже есть БД, созданная из кода, и теперь вы добавляете новое свойство в один из классов или, что еще хуже, меняете его тип или имя. Я долго искал решение этой проблемы, но ничего не смог найти. Исходя из характера проблемы, я сомневаюсь, что скоро будет решение. EF должен быть в состоянии «запомнить» код, который создал исходную схему БД, затем выполнить автоматическое «сравнение» между исходным кодом и текущим кодом и, наконец, проанализировать изменения и реализовать их в схеме БД таким образом, чтобы не будет уничтожать сохраненные данные ... Он должен быть в состоянии справиться с возможным рефакторингом, переименованием классов и так далее. Я сомневаюсь, что это будет особенность в ближайшее время ...

0 голосов
/ 03 января 2011

Это не бесплатно, но имеет 30-дневную бесплатную пробную версию: вот инструмент, который решает эту проблему (путем создания сценариев инкрементного изменения SQL-DDL), а также многие другие недостатки в конструкторе EF4:
http://huagati.com/edmxtools/

Вступительное видео:
http://huagati.blogspot.com/2010/07/introducing-model-comparer-for-entity.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...