/// <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)); }
/// <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)); }