在Up方法中获取数据库名称

时间:2017-02-27 14:04:14

标签: fluent-migrator

如何从扩展Up

的类的Down(或Migration)方法中获取迁移操作的数据库的名称
public class BaseMigration : Migration
{
    public override void Up()
    {
        var databaseName = HOW_DO_I_GET_THIS?
    }
}

1 个答案:

答案 0 :(得分:1)

如果在那里指定了数据库名称,则可以从连接字符串派生数据库名称。例如,如果您使用的是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