Esempio n. 1
0
        /// <summary>
        /// Ensures all the related Execute methods are run in a consistent manner with pre and post events.
        /// </summary>
        /// <returns></returns>
        protected virtual T Execute <T>(object preEvent, object postEvent, ISession session, object parameterObject, Func <RequestScope, object, T> requestRunner)
        {
            object paramPreEvent = RaisePreEvent(preEvent, parameterObject);

            RequestScope request = statement.Sql.GetRequestScope(this, paramPreEvent, session);

            preparedCommand.Create(request, session, Statement, paramPreEvent);
            T result = requestRunner(request, paramPreEvent);

            RaiseExecuteEvent();

            return(RaisePostEvent(postEvent, paramPreEvent, result, false));
        }
Esempio n. 2
0
        /// <summary>
        /// Ensures all the related Execute methods are run in a consistent manner with pre and post events.
        /// </summary>
        /// <returns></returns>
        protected virtual T Execute <T>(object preEvent, object postEvent, ISession session, object parameterObject, Func <RequestScope, object, T> requestRunner)
        {
            object paramPreEvent = RaisePreEvent(preEvent, parameterObject);

            RequestScope request = statement.Sql.GetRequestScope(this, paramPreEvent, session);

            //完成数据库中Command对象的准备工作 包括Connection设置 SQL语句获得 延时等信息
            preparedCommand.Create(request, session, Statement, paramPreEvent);
            //调用具体的执行工作
            T result = requestRunner(request, paramPreEvent);

            RaiseExecuteEvent();

            return(RaisePostEvent(postEvent, paramPreEvent, result, false));
        }