Exemple #1
0
        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);
        }
Exemple #2
0
        /// <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);
        }