C#: Fluent Migrator/MigSharp/migratordotnet поддерживает нумерацию версий с помощью Application.ProductVersion в коде C#?
Мне очень интересно использовать один из продуктов для миграции, но не только в базе данных, но и в файловой системе и т. Д.
Сначала я думал, что хотел бы прочитать Application.ProductVersion, но он возвращает строку, но для большинства миграций требуется LONG или подобное?
Я не знаю, делает ли это кто-нибудь, но моя идея заключалась в том, чтобы иметь две разные версии миграции.
1, чтобы перенести продукт, т. Е. Изменить каталоги, или вещи в файловой системе и т. Д., Где я бы использовал Application.ProductVersion
- перенести базу данных, где я бы использовал номер версии базы данных, которая, как я предполагаю, пришла бы из поля?
Кто-нибудь использует это таким образом?
Любые идеи, какой продукт будет поддерживать что-то вроде этого?
Мои миграции не всегда зависят от базы данных, но иногда зависят от приложения.
То, как все работает в данный момент, кажется, что каждая новая версия должна быть целым числом, то есть 1, 2, 3, 4 и т. Д.... и не принимать во внимание незначительные, ревизии и т.
С нетерпением ждем любой идеи
Спасибо
2 ответа
MigratorDotNet не требует, чтобы номера версий были последовательными (на самом деле, их текущая рекомендация - использовать метки времени, отформатированные как длинные). Так, если вы, например, уверены, что основная версия никогда не будет содержать более двух цифр, вспомогательная версия никогда не будет содержать более четырех, а номер сборки и номер редакции никогда не будут содержать более пяти цифр каждая, вы можете объединить это в долго. Например, 2.34.1023.86 станет 0200340102300086. Если ваша следующая версия 2.42.0.2 (0200420000000002), механизм миграции справится с этим. Хотя это выглядит как хак (хотя мне и нравится), оно должно работать для создания отдельной сборки с "миграциями", которые фактически манипулируют файловой системой и т. Д. Однако вам может понадобиться отдельная база данных, чтобы содержать Таблица SchemaInfo, которую MigratorDotNet использует для отслеживания примененных версий. Подобные хаки могут, вероятно, работать с другими продуктами миграции.
В MigSharp вы также можете использовать длинную метку времени. Таким образом, предложение Aasmund будет работать с Mig# тоже. В версии 2.1 Mig# у вас будет возможность полностью настроить формат отметки времени (при условии, что вы сможете вычислить длинную из него).
Таким образом, если в любой данный момент (т. Е. Версия базы данных) существует определенное состояние того, как должна выглядеть ваша файловая система и схема базы данных, тогда вы можете использовать инфраструктуру миграции и заставить миграцию выполнить все, что необходимо для файловой системы и / или базы данных., Если вы хотите изменить файловую систему только за одну миграцию, сделайте это. В этом случае база данных будет обновлена только для хранения номера последней версии миграции.