/// <summary> /// Executes a DbDataReader and returns a list of mapped column values to the properties of <typeparamref name="T"/> /// </summary> /// <typeparam name="T"></typeparam> /// <param name="command"></param> /// <returns></returns> public static void ExecuteStoredProc(this DbCommand command, Action <SprocResults> handleResults, System.Data.CommandBehavior commandBehaviour = System.Data.CommandBehavior.Default) { if (handleResults == null) { throw new ArgumentNullException(nameof(handleResults)); } using (command) { if (command.Connection.State == System.Data.ConnectionState.Closed) { command.Connection.Open(); } try { using (var reader = command.ExecuteReader(commandBehaviour)) { var sprocResults = new SprocResults(reader); // return new SprocResults(); handleResults(sprocResults); } } finally { command.Connection.Close(); } } }
/// <summary> /// Executes a DbDataReader asynchronously and returns a list of mapped column values to the properties of <typeparamref name="T"/>. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="command"></param> /// <returns></returns> public async static Task ExecuteStoredProcAsync(this DbCommand command, Action <SprocResults> handleResults, System.Data.CommandBehavior commandBehaviour = System.Data.CommandBehavior.Default, CancellationToken ct = default(CancellationToken)) { if (handleResults == null) { throw new ArgumentNullException(nameof(handleResults)); } using (command) { if (command.Connection.State == System.Data.ConnectionState.Closed) { await command.Connection.OpenAsync(ct).ConfigureAwait(false); } try { using (var reader = await command.ExecuteReaderAsync(commandBehaviour, ct).ConfigureAwait(false)) { var sprocResults = new SprocResults(reader); handleResults(sprocResults); } } finally { command.Connection.Close(); } } }
/// <summary> /// Executes a DbDataReader asynchronously/>. /// </summary> public static async Task ExecuteStoredProcAsync(this DbCommand command, Action <SprocResults> handleResults, CommandBehavior commandBehaviour = CommandBehavior.Default, CancellationToken ct = default(CancellationToken), bool manageConnection = false) { if (handleResults == null) { throw new ArgumentNullException(nameof(handleResults)); } using (command) { lock (ConnectionLocked) { if (command.Connection.State == ConnectionState.Closed) { command.Connection.Open(); } } try { using (var reader = await command.ExecuteReaderAsync(commandBehaviour, ct).ConfigureAwait(false)) { var results = new SprocResults(reader); handleResults(results); } } finally { if (manageConnection) { command.Connection.Close(); } command.Dispose(); } } }
/// <summary> /// Executes a DbDataReader/> /// </summary> /// <param name="command"></param> /// <param name="handleResults"></param> /// <param name="commandBehaviour"></param> /// <param name="manageConnection"></param> /// <returns></returns> public static void ExecuteStoredProc(this DbCommand command, Action <SprocResults> handleResults, CommandBehavior commandBehaviour = CommandBehavior.Default, bool manageConnection = false) { if (handleResults == null) { throw new ArgumentNullException(nameof(handleResults)); } using (command) { lock (ConnectionLocked) { if (command.Connection.State == ConnectionState.Closed) { command.Connection.Open(); } } try { using (var reader = command.ExecuteReader(commandBehaviour)) { var sprocResults = new SprocResults(reader); handleResults(sprocResults); } } finally { if (manageConnection) { command.Connection.Close(); } } } }
/// <summary> /// Executes a DbDataReader asynchronously and passes the results thru all <paramref name="resultActions"/> /// </summary> /// <param name="command"></param> /// <param name="commandBehaviour"></param> /// <param name="ct"></param> /// <param name="manageConnection"></param> /// <param name="resultActions"></param> /// <returns></returns> public static async Task ExecuteStoredProcAsync(this DbCommand command, DbContext context, CommandBehavior commandBehaviour = CommandBehavior.Default, CancellationToken ct = default, bool manageConnection = true, params Action <SprocResults>[] resultActions) { if (resultActions == null) { throw new ArgumentNullException(nameof(resultActions)); } using (command) { if (manageConnection && command.Connection.State == ConnectionState.Closed) { await command.Connection.OpenAsync(ct).ConfigureAwait(false); } try { using (var reader = await command.ExecuteReaderAsync(commandBehaviour, ct) .ConfigureAwait(false)) { var sprocResults = new SprocResults(reader, context); foreach (var t in resultActions) { t(sprocResults); } } } finally { if (manageConnection) { command.Connection.Close(); } } } }
public static IList <T> ExecuteStpAndGetList <T>(this DbCommand command, CommandBehavior commandBehaviour = CommandBehavior.Default) { using (command) { if (command.Connection.State == ConnectionState.Closed) { command.Connection.Open(); } try { using (var reader = command.ExecuteReader(commandBehaviour)) { var sprocResults = new SprocResults(reader); return(sprocResults.ReadToList <T>()); } } finally { command.Connection.Close(); } } }
public static async Task <IEnumerable <T> > ExecuteStpAsync <T>(this DbCommand command, CommandBehavior commandBehaviour = CommandBehavior.Default) { using (command) { if (command.Connection.State == ConnectionState.Closed) { command.Connection.Open(); } try { using (var reader = await command.ExecuteReaderAsync(commandBehaviour)) { var sprocResults = new SprocResults(reader); return(sprocResults.ReadToList <T>()); } } finally { command.Connection.Close(); } } }