是否可以通过Dapper删除+创建模式?

本文关键字:创建 模式 删除 可以通过 Dapper 是否 | 更新日期: 2023-09-27 18:11:20

我想通过Dapper在MySQL中创建一个数据库:

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

Drop database工作得很好,但是当试图执行create database:

"未知数据库'my_db'"

在MySql.Data.MySqlClient.MySqlStream.ReadPacket ()在MySql.Data.MySqlClient.NativeDriver。ReadOk(布尔读)在MySql.Data.MySqlClient.NativeDriver。SetDatabase(字符串dbName)在MySql.Data.MySqlClient.Driver。SetDatabase(字符串dbName)在MySql.Data.MySqlClient.MySqlConnection。ChangeDatabase数据库名(字符串)在MySql.Data.MySqlClient.MySqlConnection.Open ()在Dapper.SqlMapper。执行命令(IDbConnection cnn, CommandDefinition&命令,动作'2 paramReader)在Dapper.SqlMapper。ExecuteImpl(IDbConnection cnn, CommandDefinition&命令)在Dapper.SqlMapper。Execute(IDbConnection cnn, String sql, Object参数,IDbTransaction transaction, Nullable'1 commandTimeout, Nullable'1 commandType)

当然,我的IDbConnection绑定到单个数据库(在连接字符串中指定)。所以:是否有可能绕过这个问题,通过Dapper进行drop+创建?


附加信息

var _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"/>

是否可以通过Dapper删除+创建模式?

看起来只需从连接字符串中删除Database=my_db;, Dapper就可以了:

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

现在两个查询都工作了