Как вы управляете своим слоем ORM, когда база данных претерпевает изменения? - PullRequest
3 голосов
/ 05 февраля 2009

Я понимаю причину отсутствия автоматического обновления ваших .dbml (Linq2Sql), .edmx (Linq2Entities) или .hbm.xml (NHibernate). В каждом из этих решений ORM вам необходимо обновить эти файлы, если у вас есть изменения в базе данных. Есть ли способ автоматически обновить эти файлы, если вы на 100% уверены, что он ничего не сломает?

Я достаточно знаком с Миграциями в RoR. Существует ли надежный инструмент миграции в мире .NET?

В общем, как вы остаетесь гибкими при проектировании базы данных и не воссоздаете эти файлы сопоставления вручную снова и снова?

Пожалуйста, предоставьте ссылку, если этот вопрос является дубликатом. Я не смог найти его.

1 Ответ

1 голос
/ 05 февраля 2009

Я не уверен, что вы думаете об обновлении EDMX. Просто идите вперед и обновите вашу модель из базы данных. Скорее всего, это будет хорошо. Но если этого не произойдет, просто получите старую версию из системы контроля версий и внесите изменения вручную.

С LINQ to SQL, с другой стороны, это сложнее, потому что нет функции обновления. Вы должны удалить измененные объекты из вашей модели, повторно добавить их и повторно применить все внесенные изменения вручную. Опять же, контроль источника здесь жизненно важен; Вы захотите проверить файлы XML из предыдущей версии, чтобы убедиться, что вы ничего не забыли.

Я не уверен, что означает ваш вопрос о миграции. Да, есть инструмент (RikMigrations), который делает то же самое, что и миграции в Rails. Но миграции, конечно, меняют метаданные вашей базы данных. Они не меняют ваше отображение ORM. Это делается в других местах, как в Rails, так и в .NET.

...