private static SqlDataReader ExecuteReader(SqlConnection connection, SqlTransaction transaction, CommandType commandType, string commandText, SqlParameter[] commandParameters, SqlHelper.SqlConnectionOwnership connectionOwnership) { SqlCommand cmd = new SqlCommand(); SqlHelper.PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters); SqlDataReader dr; if (connectionOwnership == SqlHelper.SqlConnectionOwnership.External) { dr = cmd.ExecuteReader(); } else { dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); } cmd.Parameters.Clear(); return(dr); }
/// <summary> /// 执行命令返回DataReader /// </summary> /// <typeparam name="TReader"></typeparam> /// <typeparam name="TParameter"></typeparam> /// <param name="connection"></param> /// <param name="transaction"></param> /// <param name="commandType"></param> /// <param name="commandText"></param> /// <param name="commandParameters"></param> /// <param name="connectionOwnership"></param> /// <returns></returns> public static async Task <TReader> ExecuteReaderAsync <TReader, TParameter>(DbConnection connection, DbTransaction transaction, string commandText, IEnumerable <TParameter> commandParameters, SqlHelper.SqlConnectionOwnership connectionOwnership, CommandType commandType) where TReader : DbDataReader where TParameter : DbParameter { DbCommand cmd = CreateCommand(); await PrepareCommandAsync <TParameter>(connection, transaction, cmd, commandText, commandParameters, commandType).ConfigureAwait(false); DbDataReader dr; if (connectionOwnership == SqlHelper.SqlConnectionOwnership.External) { dr = await cmd.ExecuteReaderAsync().ConfigureAwait(false); } else { dr = await cmd.ExecuteReaderAsync(CommandBehavior.CloseConnection).ConfigureAwait(false); } cmd.Parameters.Clear(); return(dr as TReader); }