nhibernate + рабочий процесс миграции - PullRequest
15 голосов
/ 22 октября 2009

Я хочу уточнить свой рабочий процесс с NHibernate и относительно часто меняющейся схемой, и как лучше всего с этим справиться - я хотел бы, чтобы такое же решение применялось к производственным системам, поэтому я думаю, что мне нужен механизм миграции, а не просто обновление схемы.

Что я хочу знать, так это то, как я могу максимально улучшить рабочий процесс, чтобы я выполнял как можно меньше работы, чтобы синхронизировать мою базу данных с моей моделью предметной области. Подход сценариев tarantino выглядит неплохо, но, похоже, нет способа сгенерировать сценарий обновления из моих отображений nHibernate, так что я должен вручную создать сценарий или использовать redgate sql сравнить как инструмент. Я что-то упускаю, чтобы облегчить жизнь на этапе генерации сценария?

Спасибо, Chris

Ответы [ 3 ]

1 голос
/ 28 апреля 2011

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

Мы настроили NHibernate для генерации схемы с каждой автоматической сборкой (для среды разработки) вместе с загрузкой некоторых данных.

Для производственной среды у нас был скрипт, который на основе текущей схемы и требуемой схемы генерировал одну миграцию с необходимыми полями и модификациями.

1 голос
/ 22 октября 2009

Я не использовал ни один из этих инструментов миграции для .net , но когда несколько лет назад попробовал Ruby on Rails в свободное время, я увидел преимущества миграции по сравнению с t- SQL-скрипты, которые мы использовали на моей работе в то время.

0 голосов
/ 10 апреля 2012

Используем SQL Compare . Это оплачено, но стоит инвестиций imho. Держите каждый из сгенерированных сценариев хорошо организованным, то есть с отметкой времени, и вы получите хороший способ создания базы данных для любой из выпущенных версий.

Это наш обычный поток

  1. Во время DEV у нас есть две базы данных "ProjectName" и "ProjectName_TEST".
  2. Для каждого изменения схемы мы генерируем (NHibernate) новую базу данных и заменяем «ProjectName_TEST».
  3. Мы используем SQL Compare для обновления «ProjectName» (поэтому сохраняем все данные dev в нем)
  4. При выпуске мы сравниваем «ProjectName_TEST» с производственной базой данных и генерируем скрипт обновления.

Посмотрите на опции командной строки , так как они очень удобны для автоматизации процесса с помощью событий сборки VS.

...