2016-10-04 6 views
0

Я хотел бы удалить и создать базу данных в MySQL через Dapper так:Можно ли сбросить + создать схему с помощью Dapper?

public class GenericSqlExecutionRepository 
{ 
    private IDbConnection _db; 

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

базы Капли работает просто отлично, но Whe пытается выполнить создание базы данных:

«Неизвестная база данных" my_db»

в MySql.Data.MySqlClient.MySqlStream.ReadPacket() в MySql.Data.MySqlClient.NativeDriver.ReadOk (Boolean чтение) в MySql.Data.MySqlClient.NativeDriver.SetDatabase (String DbName) на MySql.Data.MySqlClient.Driver.SetDatabase (String DBNAME) в MySql.Data.MySqlClient.MySqlConnection.ChangeDatabase (String DATABASENAME) в MySql.Data.MySqlClient.MySqlConnection.Open() в Dapper.SqlMapper.ExecuteCommand (IDbConnection CNN, CommandDefinition & команда, Action'2 paramReader) на Dapper.SqlMapper.ExecuteImpl (IDbConnection CNN, CommandDefinition & команды) на Dapper.SqlMapper.Execute (IDbConnection CNN, струнный SQL, пары Object, IDbTransaction сделки, Nullable» 1 commandTimeout, Nullable'1 commandType)

Конечно, мой IDbConnection привязан к одной базе данных (указанной в строке подключения). Итак: можно ли обойти эту проблему и сделать drop + create через Dapper?


ДОПОЛНИТЕЛЬНО

Значение переменной _db генерируется следующим образом:

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

    return connection; 
} 

Это строка соединения в 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"/> 

ответ

0

Похоже, просто удаление Database=my_db; из строки соединения, Щеголеватый нормально с этим:

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

Теперь оба запроса работают.

+0

Это была ошибка, также предполагающая, что она не срабатывала при попытке использовать Invalid connection object, поскольку базовая база данных была удалена –

 Смежные вопросы

  • Нет связанных вопросов^_^