Пример #1
0
        /// <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);
                }
            }
        }
Пример #2
0
        /// <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);
                }
            }
        }
Пример #3
0
        /// <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);
                }
            }
        }