Я использую Dapper для вызова хранимой процедуры MySql.Процедура выполняется просто отлично, но после этого код выдает исключение.Проблемный блок кода выглядит следующим образом:
using (var conn = DataFactory.InitializeConnection(false))
{
conn.Query("ProcedureName", new
{
puserid = ID
}, commandType: System.Data.CommandType.StoredProcedure);
}
Где DataFactory
- следующий статический класс:
public static class DataFactory
{
public static IDbConnection InitializeConnection(bool open = true, string connectionstring = "", string databaseServerType = "MYSQL")
{
if (string.Equals(databaseServerType, "MYSQL"))
{
if (string.IsNullOrEmpty(connectionstring))
connectionstring = Settings.Default.DataConnectionString;
var csb = new MySql.Data.MySqlClient.MySqlConnectionStringBuilder(connectionstring);
var conn = new MySql.Data.MySqlClient.MySqlConnection(csb.ConnectionString);
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;
if (open)
conn.Open();
return conn;
}
throw new NotImplementedException("Not implemented for your database provider");
}
}
У меня нет bogus_table
в моей базе данных, хотяотображается в сообщении об ошибке:
MySql.Data.MySqlClient.MySqlException (0x80004005): команда SELECT запрещена для пользователя 'XXX' @ 'YYY' для таблицы 'bogus_table' в MySql.Data.MySqlClient.MySqlStream.ReadPacket () в MySql.Data.MySqlClient.NativeDriver.GetResult (Int32 & disabledRow, Int64 и вставлен ID) в MySql.Data.MySqlClient.Driult..MySqlClient.MySqlDataReader..MySqlClient.MySqlDataReader.Dispose (логическое удаление)
в MySql.Data.MySqlClient.MySqlDataReader.Dispose () в Dapper.SqlMapper.d__136 1.<>m__Finally1() at
Dapper.SqlMapper.<QueryImpl>d__136
1.MoveNext ()
*1016*