Dapper를 통해 스키마를 작성 + 삭제할 수 있습니까?

c# dapper mysql

문제

나는 아래와 같이 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 데이터베이스는 잘 작동하지만 create 데이터베이스를 실행하려고 시도합니다.

"알 수없는 데이터베이스 'my_db'"

MySql.Data.MySqlClient.Driver.SetDatabase의 MySql.Data.MySqlClient.NativeDriver.SetDatabase (문자열 dbName)에서의 MySql.Data.MySqlClient.NativeDriver.ReadOk (부울 읽기)의 MySql.Data.MySqlClient.MySqlStream.ReadPacket (String dbName) MySql.Data.MySqlClient.MySqlConnection.ChangeDatabase (String databaseName) MySql.Data.MySqlClient.MySqlConnection.Open () Dapper.SqlMapper.ExecuteCommand (IDbConnection cnn, CommandDefinition & command, Action'2 paramReader)에서 Dapper Dapper.SqlMapper.Execute (IDbConnection cnn, String sql, Object param, IDbTransaction 트랜잭션, Nullable'1 commandTimeout, Nullable'1 commandType)에서 .SqlMapper.ExecuteImpl (IDbConnection cnn, CommandDefinition &

물론 내 IDbConnection 은 연결 문자열에 지정된 단일 데이터베이스에 연결됩니다. 그래서 :이 문제를 우회하여 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; 를 삭제하면 Database=my_db; 연결 문자열에서 Dapper는 다음과 같이 OK입니다.

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

이제 두 쿼리가 작동합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow