MigratorDotNet для архитектуры плагинов
Мы начинаем использовать Migrator.NET для управления миграциями нашей базы данных, это фантастика, но у нас есть дополнительное требование, чтобы плагины, написанные для нашего программного обеспечения, требовали добавления своих собственных полей (конечно, в зависимости от плагина).
Таким образом, в основном у нас есть таблицы основных баз данных и таблицы для плагинов.
Я надеялся, что в Migrator.NET я увижу какой-то дополнительный атрибут, подобный этому
[Migration(1, "Core")
public class Migration1 : Migration
{
}
так что я мог бы тогда подключить разработчиков, то смог бы сделать что-то вроде
[Migration(1, "PluginName")
public class Migration1 : Migration
{
}
К сожалению, этот параметр не существует, и в таблице версий, похоже, нет места для хранения имени тега / плагина.
CREATE TABLE [dbo].[VersionInfo](
[Version] [bigint] NOT NULL,
[AppliedOn] [datetime] NULL
) ON [PRIMARY]
У кого-нибудь есть идеи, как мне поступить?
Я видел, что Ruby/Redmine поддерживает такого рода архитектуру, поскольку они позволяют подключаемым модулям включать собственные миграции БД, однако хотелось бы иметь возможность делать это в MigratorDotNet.
1 ответ
Вы упомянули, что вы помечаете теги, и вы можете фильтровать миграции на основе тегов, например, так:
[Tags("DK", "NL", "UK")]
[Tags("Staging", "Production")]
[Migration(1)]
public class DoSomeStuffToEuropeanStagingAndProdDbs() { }
Смотрите следующую вики-страницу для более подробной информации:
https://github.com/schambers/fluentmigrator/wiki/Filter-migrations-run-based-on-Tags