2011-03-07 2 views
0

Я очень заинтересован в использовании одного из продуктов для миграции, но не только в базе данных, но и в файловой системе и т. Д.C#: Fluent Migrator/MigSharp/migratordotnet поддерживает версию с использованием Application.ProductVersion в коде C#?

Моя первоначальная мысль заключалась в том, что я бы хотел прочитать Application.ProductVersion, но он возвращает строку но большая часть миграций нужна ДОЛГО или что-то подобное?

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

-мигрировать т.е. продукта Изменить каталоги, или вещи в файловой системе и т.д., где я хотел бы использовать Application.ProductVersion

  1. перенести базу данных, где я хотел бы использовать номер версии базы данных, которую я Предполагают, что это исходит из поля?

Неужели кто-нибудь его использует?

Любые идеи, которые будут поддерживать что-то подобное?

Мои миграции не всегда зависят от конкретной базы данных, но иногда и для конкретных приложений.

То, как все работает в настоящий момент, кажется, что каждая новая версия должна быть целым числом, то есть 1, 2, 3, 4 и т. Д. ... и не учитывает незначительные изменения и т. Д.

Порадуйтесь любой проницательности

Благодаря

ответ

0

MigratorDotNet не требует, чтобы номера версий должны быть последовательными (на самом деле, их текущая рекомендация использовать временные метки, отформатированные в лонги). Так что, если вы, например, что основная версия никогда не будет содержать более двух цифр, младшая версия никогда не будет содержать больше четырех, а номер сборки и номер версии никогда не будут содержать более пяти цифр каждый, вы можете объединить это в длинный. Например, 2.34.1023.86 станет 0200340102300086. Если ваша следующая версия будет 2.42.0.2 (0200420000000002), механизм миграции обработает это. Хотя это похоже на небольшой взлом (хотя и тот, который мне нравится), он должен работать, чтобы создать отдельную сборку с «миграциями», которые фактически манипулируют файловой системой и т. Д. Однако вам может понадобиться отдельная база данных для SchemaInfo, которую MigratorDotNet использует для отслеживания применяемых версий. Подобные хаки, вероятно, могут работать с другими продуктами миграции.

+0

Привет, Aasmund, спасибо за информацию. Я не понимаю, как передать текущую версию миграции, то есть преобразовать ProductVersion из 2.42.0.2 в число, подобное (0200420000000002), но затем передать это рамки? – Martin

+0

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

+0

Что касается управления версиями базы данных, где я могу сохранить свою версию базы данных и передать ее в перенос. Моя миграция приложений будет productversion, но версия базы данных действительно должна поступать из поля в db, которое мне нужно обновить, когда миграция завершена ... или я пропущу точку :-) – Martin

0

В MigSharp вы также можете использовать длинные временные метки. Таким образом, предложение Асмунда будет работать с Mig #. В версии 2.1 Mig # у вас будет возможность полностью настроить формат timestamp (пока вы можете вычислить длинный от него).

Таким образом, если на любой данный момент (например, версия базы данных) существует определенное состояние того, как должна выглядеть ваша файловая система и схема базы данных, тогда вы можете использовать инфраструктуру миграции и выполнить миграцию, что необходимо для файловой системы и/или базы данных. Если вы хотите изменить файловую систему только в одной миграции, сделайте это. В этом случае база данных будет обновляться только для хранения последнего номера версии миграции.