private async Task QueryImplInternalAsync <TTarget>(int hashKey, Type targetType, string sql, DbConnection conn, DbTransaction trans, CommandType cmdType, CommandBehavior behavior, Action <object> resultHandler, object objParameter, Type paramType) { DbCommand command = conn.CreateCommand(); command.CommandText = sql; command.CommandType = cmdType; command.Transaction = trans; if (objParameter != null) { var paramAction = RepositoryHelper.GetActionCache(hashKey, sql, paramType, this.Provider); paramAction(command, objParameter); } this.Open(conn); DbDataReader reader = await command.ExecuteReaderAsync(behavior); var func = RepositoryHelper.GetReader(hashKey, targetType, reader, this.Provider.IsMappingIgnoreCase); while (reader.Read()) { resultHandler(func?.Invoke(reader)); } while (reader.NextResult()) { } #if COREFX try { command.Cancel(); } catch { } #else reader.Close(); #endif reader.Dispose(); reader = null; }
private async Task <int> ExecSqlImplInternalAsync(int hashKey, string sql, DbConnection conn, DbTransaction trans, CommandType cmdType, object objParameter, Type paramType) { DbCommand command = conn.CreateCommand(); command.CommandText = sql; command.CommandType = cmdType; command.Transaction = trans; if (objParameter != null) { var paramAction = RepositoryHelper.GetActionCache(hashKey, sql, paramType, this.Provider); paramAction(command, objParameter); } this.Open(conn); return(await command.ExecuteNonQueryAsync()); }
private async Task <QueryReader> QueryMultipleImplAsync(int hashKey, string sql, DbConnection conn, DbTransaction trans, CommandType cmdType, CommandBehavior behavior, object objParameter, Type paramType, bool isCloseConnection) { DbCommand command = conn.CreateCommand(); command.CommandText = sql; command.CommandType = cmdType; command.Transaction = trans; if (objParameter != null) { var paramAction = RepositoryHelper.GetActionCache(hashKey, sql, paramType, this.Provider); paramAction(command, objParameter); } this.Open(conn); DbDataReader reader = await command.ExecuteReaderAsync(behavior); return(new QueryReader(hashKey, command, reader, this.Provider.IsMappingIgnoreCase, isCloseConnection)); }