fluent-migrator – 在Up方法中获取数据库名称

如何从扩展迁移的类的Up(或Down)方法中获取迁移正在操作的数据库的名称

public class BaseMigration : Migration
{
    public override void Up()
    {
        var databaseName = HOW_DO_I_GET_THIS?
    }
}

最佳答案 如果在那里指定了数据库名称,则可以从连接字符串派生数据库名称.例如,如果您使用的是SQL服务器,这将有效:

public class BaseMigration : Migration
{
    public override void Up()
    {
        System.Data.SqlClient.SqlConnectionStringBuilder builder =
            new System.Data.SqlClient.SqlConnectionStringBuilder(ConnectionString);
        var databaseName = builder.InitialCatalog;
    }
}

否则,请使用其他可用的
System.Data.Common.DbConnectionStringBuilder实施:

System.Data.EntityClient.EntityConnectionStringBuilder
System.Data.Odbc.OdbcConnectionStringBuilder
System.Data.OleDb.OleDbConnectionStringBuilder
System.Data.OracleClient.OracleConnectionStringBuilder

有关更多信息,请参见this stackoverflow post.

点赞