public static async Task <IEnumerable <T> > Query <T>(string sql, DynamicParameters param = null, IDbTransaction dbTransaction = null, IDbConnection connection = null, SQLType type = SQLType.MySql) { if (connection != null) { if (connection.State != ConnectionState.Open) { connection.Open(); } param = param ?? new DynamicParameters(); return(await connection.QueryAsync <T>(sql, param, dbTransaction)); } else { switch (type) { case SQLType.SQLServer: using (IDbConnection conn = new SqlConnection(ConnectionString)) { conn.Open(); param = param ?? new DynamicParameters(); return(await conn.QueryAsync <T>(sql, param)); } case SQLType.MySql: using (IDbConnection conn = new MySqlData.MySql.Data.MySqlClient.MySqlConnection(ConnectionString)) { conn.Open(); param = param ?? new DynamicParameters(); return(await conn.QueryAsync <T>(sql, param)); } default: throw new Exception("Wrong type"); } } }