2011-01-02 1 views
3

Я использую Entity Framework модель первого развитие, и мне нужно сделать миграцию базы данных часто,рамки Entity: Нужна спокойная, чистая миграция базы данных решение

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

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

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

PS: Я люблю ОРМ Дженго.

+0

Проверьте это [EntityFramework.SchemaCompare] (https://github.com/kriasoft/data). –

ответ

1

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

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

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

1

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

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

+0

. Это настолько распространено для .NET. – user469652

+0

Я не уверен, что это плохая функция. Логично, что это требование довольно сложно реализовать таким образом, который остается простым в использовании и прозрачным, так как остальная часть функции EF.Чтобы разрешить миграцию, необходимо выяснить, что вы изменили в своем коде и что вы хотели сделать в БД. Есть много случаев, когда ответ не ясен из самого кода. Чтобы преодолеть это, вы должны будете иметь возможность комментировать ваш код таким образом, чтобы выражать изменения модели, что делает эту функцию намного сложнее, чем она была первоначально. –

0

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

интро видео:
http://huagati.blogspot.com/2010/07/introducing-model-comparer-for-entity.html

Смежные вопросы