/// <summary> /// Executes the given function. /// </summary> /// <typeparam name="C">Type of the object context.</typeparam> /// <typeparam name="T">Type of the object result.</typeparam> /// <param name="exec">The exec.</param> /// <param name="evaluateResult">The evaluate result.</param> /// <param name="onFailure">The on failure.</param> public static void ExecFunc <C, T>(C dataContext, Func <C, T> exec, Action <T> evaluateResult, Action <ExecFuncFailureResult> onFailure) where C : DbContext { ModuleProc PROC = new ModuleProc("DataContextHelper", "ExecFunc<T>"); ExecFuncFailureResult failureResult = ExecFuncFailureResult.None; try { using (C context = dataContext) { if (context != null) { try { T result = exec(context); if (evaluateResult != null) { evaluateResult(result); } } catch (Exception ex) { Log.Exception(PROC, ex); failureResult = ExecFuncFailureResult.UnableToExecute; } } else { failureResult = ExecFuncFailureResult.DBConnectionFailure; } } } catch (Exception ex) { Log.Exception(PROC, ex); } finally { if (failureResult != ExecFuncFailureResult.None && onFailure != null) { onFailure(failureResult); } } }
/// <summary> /// Executes the given function. /// </summary> /// <typeparam name="C">Type of the object context.</typeparam> /// <typeparam name="T">Type of the object result.</typeparam> /// <param name="exec">The exec.</param> /// <param name="evaluateResult">The evaluate result.</param> /// <param name="onFailure">The on failure.</param> public static void ExecFunc <C, T>(C dataContext, Func <C, ObjectResult <T> > exec, Func <T, long, bool> evaluateResult, Action <ExecFuncFailureResult> onFailure) where C : DbContext { ModuleProc PROC = new ModuleProc("DataContextHelper", "ExecFunc<T>"); ExecFuncFailureResult failureResult = ExecFuncFailureResult.None; try { long index = 0; bool hasRows = false; using (C context = dataContext) { if (context != null) { try { ObjectResult <T> resultItems = exec(context); if (resultItems != null) { foreach (T resultItem in resultItems) { hasRows |= true; if (evaluateResult != null) { try { bool isOK = evaluateResult(resultItem, index); if (!isOK) { break; } } catch (Exception ex) { Log.Exception(PROC, ex); } } index++; } if (!hasRows) { failureResult = ExecFuncFailureResult.ObjectResultsZeroCount; } } else { failureResult = ExecFuncFailureResult.ObjectResultsEmpty; } } catch (Exception ex) { Log.Exception(PROC, ex); failureResult = ExecFuncFailureResult.UnableToExecute; } } else { failureResult = ExecFuncFailureResult.DBConnectionFailure; } } } catch (Exception ex) { Log.Exception(PROC, ex); } finally { if (failureResult != ExecFuncFailureResult.None && onFailure != null) { onFailure(failureResult); } } }
/// <summary> /// Executes the given function. /// </summary> /// <typeparam name="C">Type of the object context.</typeparam> /// <typeparam name="T">Type of the object result.</typeparam> /// <param name="exec">The exec.</param> /// <param name="evaluateResult">The evaluate result.</param> /// <param name="onFailure">The on failure.</param> public static void ExecFuncEnumerable <C, T>(C dataContext, Func <C, ObjectResult <T> > exec, Action <IEnumerable <T> > onSuccess, Action <ExecFuncFailureResult> onFailure) where C : DbContext { ModuleProc PROC = new ModuleProc("DataContextHelper", "ExecFunc<T>"); ObjectResult <T> result = null; ExecFuncFailureResult failureResult = ExecFuncFailureResult.None; try { using (C context = dataContext) { if (context != null) { try { result = exec(context); if (result != null && onSuccess != null) { try { onSuccess(result); } catch (Exception ex) { Log.Exception(PROC, ex); } } else { failureResult = ExecFuncFailureResult.ObjectResultsEmpty; } } catch (Exception ex) { Log.Exception(PROC, ex); failureResult = ExecFuncFailureResult.UnableToExecute; } } else { failureResult = ExecFuncFailureResult.DBConnectionFailure; } } } catch (Exception ex) { Log.Exception(PROC, ex); } finally { if (failureResult != ExecFuncFailureResult.None && onFailure != null) { onFailure(failureResult); } } }