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

标签 c# mysql dapper

我想通过 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`;");
    }
}

删除数据库工作得很好,但是当尝试执行创建数据库时:

"Unknown database 'my_db'"

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

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

<小时/>

其他信息

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

最佳答案

看起来只需从连接字符串中删除 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"/>

现在两个查询都可以工作。

关于c# - 是否可以通过 Dapper 删除+创建模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39848025/

相关文章:

c++ - 使用C的MySQL varchar中的编码字符缓冲区存储问题

c# - 使用 dapper 替换成熟的 OR/M

c# - 是否有包含 Dapper.Net SqlBuilder 的 nuget 包?

c# - 从列表中删除重复值的最佳算法

c# - 启动后更改MVC6的路由集合

c# - 按父原始消息分组的消息答案

php - 如何使用数据库中的值制作 HTML 下拉列表

mysql - 如何组织 MySQL 数据库来存储此 XML 数据

c# - Entity Framework 无法在对象中插入重复键

c# - 批量删除行。如何打开/重用 SQL Server 连接?