Я работаю с двумя базами данных и хочу использовать для этого свободный мигратор.Это две базы данных SQL, которые могут находиться на разных серверах и иметь разные строки подключения.У них разные таблицы и данные.Но у меня только один стартап и один проект.Я хочу указать для каждой миграции используемую базу данных.Как я могу справиться с этим?В настоящее время я пытаюсь решить его с помощью атрибутов, но я не уверен, работает ли он как-то:
public class MyAttribute : Attribute
{
public MyAttribute(string name)
{
Name = name;
}
public string Name;
}
[MyAttribute("Database1")]
[Migration(1)]
public class FooScript : Migration
{
public override void Down()
{
Delete.Table("Foo");
}
public override void Up()
{
Create.Table("Foo")
.WithColumn("id").AsInt16().PrimaryKey()
.WithColumn("Body").AsString(4000).NotNullable();
}
}
И при запуске:
services.AddFluentMigratorCore()
.ConfigureRunner(rb => rb
.AddSqlServer()
.WithGlobalConnectionString("")
.ScanIn(typeof(database1).Assembly, typeof(database1).Assembly).For.Migrations())
.Configure<ProcessorOptions>(x =>
{
var connection = typeof(FooScript).GetCustomAttributes(typeof(MyAttribute), true);
var name = "0"; //here I would need the current executing Migration class
switch (name)
{
case "Database1":
x.ConnectionString = Configuration.GetConnectionString("Database1");
break;
case "Database1":
x.ConnectionString = Configuration.GetConnectionString("Database1");
break;
}
})
.BuildServiceProvider();
Но это не такработай.Мне понадобится атрибут текущего скрипта для перезаписи базы данных.Но у proucessorOptions таких нет.Есть ли другое решение или другая конфигурация, которую я мог бы перезаписать?Любые другие идеи, как я могу запустить fluentmigration с двумя или более различными базами данных SQL?
Теоретически я бы в конечном итоге с VersionInfo для каждой базы данных и текущей миграции для этой базы данных.Надеюсь, что это работает.