¿Es posible descartar + crear un esquema a través de Dapper?

c# dapper mysql

Pregunta

Me gustaría dejar caer y crear una base de datos en MySQL a través de Dapper de esta manera:

public class GenericSqlExecutionRepository
{
    private IDbConnection _db;

    public void RecreateDb()
    {
        _db.Execute("DROP DATABASE IF EXISTS `my_db`;");
        _db.Execute("CREATE DATABASE `my_db`;");
    }
}

La base de datos Drop funciona bien, pero al intentar ejecutar la base de datos create:

"Base de datos desconocida 'my_db'"

en MySql.Data.MySqlClient.MySqlStream.ReadPacket () en MySql.Data.MySqlClient.NativeDriver.ReadOk (lectura Booleana) en MySql.Data.MySqlClient.NativeDriver.SetDatabase (String dbName) en MySql.Data.MySqlClient.Driver.SetDatabase (String dbName) en MySql.Data.MySqlClient.MySqlConnection.ChangeDatabase (String databaseName) en MySql.Data.MySqlClient.MySqlConnection.Open () en Dapper.SqlMapper.ExecuteCommand (IDbConnection cnn, CommandDefinition & command, Action'2 paramReader) en Dapper .SqlMapper.ExecuteImpl (IDbConnection cnn, CommandDefinition & command) en Dapper.SqlMapper.Execute (IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable'1 commandTimeout, Nullable'1 commandType)

Por supuesto, mi IDbConnection está ligada a una única base de datos (especificada en la cadena de conexión). Entonces: ¿es posible eludir este problema y hacer el drop + create a través de Dapper?


INFO ADICIONALES

El var _db se genera así:

public static MySqlConnection GetConnection(string connectionStringId)
{
    var connectionString = ConfigurationManager.ConnectionStrings[connectionStringId].ConnectionString;
    var connection = new MySqlConnection();
    connection.ConnectionString = connectionString;

    return connection;
}

Esta es la cadena de conexión en App.config :

<add name="myDbId" connectionString="Server=localhost;Port=3306;Database=my_db;User=yyyyyyy;Password=zzzzzzz;Convert Zero Datetime=True;Compress=True;" providerName="System.Data.SqlClient"/>

Respuesta popular

Parece que simplemente eliminando Database=my_db; de la cadena de conexión, Dapper está bien con eso:

<add name="myDbId" connectionString="Server=localhost;Port=3306;User=yyyyyyy;Password=zzzzzzz;Convert Zero Datetime=True;Compress=True;" providerName="System.Data.SqlClient"/>

Ahora ambas consultas funcionan.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué