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

Другие вопросы по тегам