public DbResultContext(IDbExecuteContext ctx, Type resultType, object resultInstance, IResultHandler resultHandler, IDictionary items) : base(items) { this.ExecuteContext = ctx; this.ResultType = resultType; this.ResultInstance = resultInstance; this.ResultHandler = resultHandler; }
private string BuildParameter(IDbExecuteContext ctx, IParameterSetting parameter, string parameterName, object parameterValue, string commandText, DbCommand cmd) { var objectService = ObjectService.Current; var typeName = objectService.GetTypeName(parameter.ParameterTypeName); var parameterType = TypeHelper.CreateType(typeName, true); if (parameterValue != null) { //判断类型是否匹配 var parameterRealType = parameterValue.GetType(); if (parameterRealType.IsEnum && parameterType == typeof (int)) {} else if (parameterRealType.IsValueType) {} else if (!parameterType.IsInstanceOfType(parameterValue)) { throw new DataException(string.Format("参数 {0} 类型不匹配", parameter.Name)); } } else { //获取缺省值 parameterValue = parameter.GetDefaultValue(parameterType); } if (parameter.IsInline) { if (parameterValue != null) { commandText = commandText.Replace(parameterName, parameterValue.ToString()); } } else { if (parameterValue != null && parameterValue is IObjectWrap) { //传出的参数? parameterValue = ((IObjectWrap) parameterValue).Value; } this.BuildParameter(ctx, cmd, parameter, parameterName, parameterValue); } return commandText; }
//通过配置和参数创建SQL参数 protected virtual void BuildParameter(IDbExecuteContext ctx, DbCommand cmd, IParameterSetting parameter, string parameterName, object parameterValue) { var dbParameter = cmd.CreateParameter(); dbParameter.ParameterName = parameterName; //这里的参数名已经有@前缀了 var isNullable = parameter.IsNullable; if (isNullable && parameterValue == null) { parameterValue = DBNull.Value; } dbParameter.Value = parameterValue; if (!string.IsNullOrEmpty(parameter.DbTypeName)) //显示指定了参数类型 { ctx.DataStorage.SetDbType(dbParameter, parameter.DbTypeName); } else //未指定则从类型值里推断参数类型 { ctx.DataStorage.SetDbTypeFromValue(dbParameter, parameterValue); } dbParameter.Direction = parameter.Direction; dbParameter.IsNullable = parameter.IsNullable; dbParameter.Size = parameter.Size; ((IDbDataParameter)dbParameter).Scale = parameter.Scale; ((IDbDataParameter)dbParameter).Precision = parameter.Precision; cmd.Parameters.Add(dbParameter); }
protected override object ExecuteResult(IDbExecuteContext ctx, Type resultType, object resultInstance) { var type = this.GetResultType(ctx, resultType, resultInstance, null); var handler = this.GetResultHandler(type); return(handler.ExecuteResult(ctx, resultType, resultInstance)); }
protected virtual IPaginateResult ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type elementType) { PaginateResult result; if (elementType == null) { result = new PaginateResult(); } else { var type = typeof(PaginateResult <>); var instanceType = type.MakeGenericType(elementType); result = (PaginateResult)TypeHelper.CreateObject(instanceType, null, true); } using (var reader = command.ExecuteReader(CommandBehavior.Default)) { if (reader.Read()) { result.Count = Convert.ToInt32(reader[0]); } var list = new ArrayList(); if (reader.NextResult()) { while (reader.Read()) { list.Add(this.ObjectMapper.Mapping(ctx.Statement, reader.ToDictionary(), elementType, null)); } } result.Items = elementType != null ? (object[])list.ToArray(elementType) : list.ToArray(); } return(result); }
protected virtual object ExecuteResult(IDbExecuteContext ctx, Type resultType, object resultInstance) { var cmd = this.GetDbCommand(ctx); var result = this.ExecuteResultInternal(ctx, cmd, resultType, resultInstance); return(result); }
protected virtual object HandleOutputOrReturnValue(IDbExecuteContext ctx, Type resultType, object resultInstance, DbCommand cmd, object executedResult) { //此方法由实现者自行调用,大部分情况下只有<see cref="NoneResultHandler" />会调用 foreach (DbParameter dp in cmd.Parameters) { if (dp.Direction == ParameterDirection.InputOutput || dp.Direction == ParameterDirection.Output || dp.Direction == ParameterDirection.ReturnValue) { var ps = ctx.Statement.Parameters.SingleOrDefault(x => string.Compare(x.ParameterName, dp.ParameterName, StringComparison.InvariantCultureIgnoreCase) == 0); if (ps == null) { continue; } if (dp.Direction == ParameterDirection.ReturnValue) //返回参数 { executedResult = dp.Value; } else { var valueWrap = ctx.Parameters[ps.Name] as IObjectWrap; if (valueWrap == null) { continue; } valueWrap.ChangeValue(dp.Value); } } } return(executedResult); }
protected virtual string GetCommandText(IDbExecuteContext ctx, IStatementSetting statement, IDictionary parameterValues) { if (statement.StatementText.Parser != null) { return(statement.StatementText.Parser.GetCommandText(statement, parameterValues)); } return(statement.StatementText.CommandText); }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var defaultType = typeof(IDataReader); var type = this.GetResultType(ctx, resultType, resultInstance, defaultType); if (!defaultType.IsAssignableFrom(type)) { throw new DataException("要求返回的类型不正确"); } return command.ExecuteReader(CommandBehavior.CloseConnection); }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { using (var reader = command.ExecuteReader(CommandBehavior.SingleRow)) { if(reader.Read()) { resultInstance = this.ObjectMapper.Mapping(ctx.Statement, reader.ToDictionary(), resultType, resultInstance); } return resultInstance; } }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var affectedRows = command.ExecuteNonQuery(); //判断是否是存储过程,是则需要处理输出参数和返回参数 if(command.CommandType == CommandType.StoredProcedure) { var result = this.HandleOutputOrReturnValue(ctx, resultType, resultInstance, command, affectedRows); return result; } return affectedRows; }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { using (var reader = command.ExecuteReader(CommandBehavior.SingleRow)) { if (reader.Read()) { resultInstance = this.ObjectMapper.Mapping(ctx.Statement, reader.ToDictionary(), resultType, resultInstance); } return(resultInstance); } }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var defaultType = typeof(IDataReader); var type = this.GetResultType(ctx, resultType, resultInstance, defaultType); if (!defaultType.IsAssignableFrom(type)) { throw new DataException("要求返回的类型不正确"); } return(command.ExecuteReader(CommandBehavior.CloseConnection)); }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var affectedRows = command.ExecuteNonQuery(); //判断是否是存储过程,是则需要处理输出参数和返回参数 if (command.CommandType == CommandType.StoredProcedure) { var result = this.HandleOutputOrReturnValue(ctx, resultType, resultInstance, command, affectedRows); return(result); } return(affectedRows); }
public virtual DbCommand GetCommand(IDbExecuteContext ctx) { var wrap = ctx.CommandWrap; var statement = ctx.Statement; var cmd = wrap.Command; cmd.CommandType = statement.CommandType; cmd.CommandTimeout = statement.Timeout; var parameterValues = ctx.Parameters; var commandText = this.GetCommandText(ctx, statement, parameterValues); foreach (var parameter in statement.Parameters) { var parameterValue = parameterValues[parameter.Name]; if (parameter.Expandable) //符合可扩展条件 { var array = parameterValue as Array; if (array != null) //数组 { for (var i = 0; i < array.Length; i++) { commandText = this.BuildParameter(ctx, parameter, parameter.ParameterName + i, array.GetValue(i), commandText, cmd); } } else if (parameterValue != null) //尝试转换成IDictionary形式 { var dict = parameterValue.ToDictionary(); foreach (var key in dict.Keys) { var pn = Convert.ToString(key); if (string.IsNullOrEmpty(pn)) { continue; } this.BuildParameter(ctx, cmd, parameter, pn, dict[key]); } } //否则此选项无效 } else { commandText = this.BuildParameter(ctx, parameter, parameter.ParameterName, parameterValue, commandText, cmd); } } cmd.CommandText = commandText; var dataService = ctx.DataService; if (dataService is DataServiceBase && ((DataServiceBase)dataService).Debug) { LogService.WriteLog(this, LogLevel.DEBUG, commandText + "\r\n" + JsonHelper.ToJson(parameterValues, false)); } return(cmd); }
protected virtual object FactoryExecuteResult(IDbExecuteContext ctx, Type resultType, object resultInstance) { var returnValue = FactoryExecuteResultInternal(ctx, resultType, resultInstance); if (returnValue == null && resultType.IsValueType) { if (!resultType.IsGenericType || resultType.GetGenericTypeDefinition() != typeof(Nullable <>)) { throw new DataException($"期待返回的类型是值类型[{resultType.Name}],但返回的是null,无法转换。"); } } return(returnValue); }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var type = this.GetResultType(ctx, resultType, resultInstance, null); if(type != null && !(type.IsValueType || type == typeof(string))) { throw new DataException("要求返回的类型不正确"); } var result = command.ExecuteScalar(); if(!Convert.IsDBNull(result) && result != null && type != null) { var ut = Nullable.GetUnderlyingType(type) ?? type; result = Convert.ChangeType(result, ut); } return Convert.IsDBNull(result) ? null : result; }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var defaultType = typeof(IPaginateResult); var type = this.GetResultType(ctx, resultType, resultInstance, defaultType); if (!defaultType.IsAssignableFrom(type)) { throw new DataException("要求返回的类型不正确"); } Type elementType = null; var types = type.GetGenericArguments(); if(types != null && types.Length == 1) { elementType = types[0]; } return this.ExecuteResultInternal(ctx, command, elementType); }
protected virtual string GetCacheKey(IDataCacheSetting setting, IDbExecuteContext ctx) { var cacheKey = setting.CacheKey; if (string.IsNullOrEmpty(cacheKey)) { cacheKey = ctx.Statement.Name; } var key = cacheKey + ":"; var parameters = setting.Parameters; if (string.IsNullOrEmpty(parameters)) { key += ctx.Parameters.ToString(null); } else { key += ctx.Parameters.ToString(parameters.Split(','), null); } return key; }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var defaultType = typeof(DataTable); var type = this.GetResultType(ctx, resultType, resultInstance, defaultType); if (!defaultType.IsAssignableFrom(type)) { throw new DataException("要求返回的类型不正确"); } var provider = ctx.DataStorage.DataProviderFactory; var result = resultInstance as DataTable ?? new DataTable(); using (var adapter = provider.CreateDataAdapter()) { adapter.SelectCommand = command; adapter.Fill(result); } return result; }
public static Type GetResultType(IDbExecuteContext ctx, Type resultType, object resultInstance, Type defaultType) { if (resultType == null) { if (resultInstance != null) { resultType = resultInstance.GetType(); } if (resultType == null) { resultType = defaultType; } } return(resultType); }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var type = this.GetResultType(ctx, resultType, resultInstance, null); if(type != null && !typeof(Array).IsAssignableFrom(type)) { throw new DataException("要求返回的类型不正确"); } var elementType = type != null ? type.GetElementType() : null; var list = new ArrayList(); using (var reader = command.ExecuteReader(CommandBehavior.SingleResult)) { while(reader.Read()) { var result = this.ObjectMapper.Mapping(ctx.Statement, reader.ToDictionary(), elementType, null); list.Add(result); } } return elementType == null ? list.ToArray() : list.ToArray(elementType); }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var type = this.GetResultType(ctx, resultType, resultInstance, null); if (type != null && !(type.IsValueType || type == typeof(string))) { throw new DataException("要求返回的类型不正确"); } var result = command.ExecuteScalar(); if (!Convert.IsDBNull(result) && result != null && type != null) { var ut = Nullable.GetUnderlyingType(type) ?? type; result = Convert.ChangeType(result, ut); } return(Convert.IsDBNull(result) ? null : result); }
protected virtual object FactoryExecuteResultInternal(IDbExecuteContext ctx, Type resultType, object resultInstance) { IResultHandler handler; var handlerName = ctx.Statement.ResultHandlerName; if (string.IsNullOrEmpty(handlerName)) { var type = GetResultType(ctx, resultType, resultInstance, null); handler = this.GetResultHandler(type); } else { handler = this.ObjectService.GetOrCreateObject <IResultHandler>(handlerName); } var resultContext = new DbResultContext(ctx, resultType, resultInstance, handler, null); if (this.Modules != null && this.Modules.Length > 0) { foreach (var module in this.Modules) { module.OnResultExecute(resultContext); if (resultContext.ResultHandled) { break; } } } if (resultContext.ResultHandled) { return(resultContext.ResultInstance); } handler = resultContext.ResultHandler; if (handler == null) { throw new DataException("ResultHandler Not Found"); } if (resultType == null && resultInstance == null) //都没有指定?则使用无返回值的处理器 { var noneHandler = this.ObjectService.GetObject <NoneResultHandler>(); if (noneHandler != null) { handler = noneHandler; } } return(handler.ExecuteResult(ctx, resultType, resultInstance)); }
//仅通过参数创建SQL参数 protected virtual void BuildParameter(IDbExecuteContext ctx, DbCommand cmd, string parameterName, object parameterValue) { if (parameterValue is DbParameter dbp) //如果已经是参数类型,则直接添加 { cmd.Parameters.Add(dbp); return; } var dbParameter = cmd.CreateParameter(); dbParameter.ParameterName = "@" + parameterName; //这里的参数名需要添加@前缀 if (parameterValue == null) { parameterValue = DBNull.Value; } dbParameter.Value = parameterValue; ctx.DataStorage.SetDbTypeFromValue(dbParameter, parameterValue); cmd.Parameters.Add(dbParameter); }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var defaultType = typeof(IPaginateResult); var type = this.GetResultType(ctx, resultType, resultInstance, defaultType); if (!defaultType.IsAssignableFrom(type)) { throw new DataException("要求返回的类型不正确"); } Type elementType = null; var types = type.GetGenericArguments(); if (types != null && types.Length == 1) { elementType = types[0]; } return(this.ExecuteResultInternal(ctx, command, elementType)); }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var defaultType = typeof(DataSet); var type = this.GetResultType(ctx, resultType, resultInstance, defaultType); if (!defaultType.IsAssignableFrom(type)) { throw new DataException("要求返回的类型不正确"); } var provider = ctx.DataStorage.DataProviderFactory; var result = resultInstance as DataSet ?? new DataSet(); using (var adapter = provider.CreateDataAdapter()) { adapter.SelectCommand = command; adapter.Fill(result); } return(result); }
private string BuildParameter(IDbExecuteContext ctx, IParameterSetting parameter, string parameterName, object parameterValue, string commandText, DbCommand cmd) { Type parameterType = null; if (!string.IsNullOrEmpty(parameter.ParameterTypeName)) { var objectService = ObjectService.Current; parameterType = objectService.GetOrCreateType(parameter.ParameterTypeName); } if (parameterValue != null) //判断类型是否匹配 { var parameterRealType = parameterValue.GetType(); if (parameterRealType.IsEnum && parameterType == typeof(int)) { } else if (parameterRealType.IsValueType) { } else if (parameterType != null && !parameterType.IsInstanceOfType(parameterValue)) { throw new DataException($"参数 {parameter.Name} 类型不匹配"); } } else //获取缺省值 { parameterValue = parameter.GetDefaultValue(parameterType); } if (parameter.IsInline) { if (parameterValue != null) { commandText = commandText.Replace(parameterName, parameterValue.ToString()); } } else { if (parameterValue is IObjectWrap) //传出的参数? { parameterValue = ((IObjectWrap)parameterValue).Value; } this.BuildParameter(ctx, cmd, parameter, parameterName, parameterValue); } return(commandText); }
protected virtual void BuildParameter(IDbExecuteContext ctx, DbCommand cmd, IParameterSetting parameter, string parameterName, object parameterValue) { var dbParameter = cmd.CreateParameter(); dbParameter.ParameterName = parameterName; if(!string.IsNullOrEmpty(parameter.DbTypeName)) { ctx.DataStorage.SetDbType(dbParameter, parameter.DbTypeName); } var isNullable = parameter.IsNullable; if(isNullable && parameterValue == null) { parameterValue = DBNull.Value; } dbParameter.Direction = parameter.Direction; dbParameter.IsNullable = parameter.IsNullable; dbParameter.Size = parameter.Size; ((IDbDataParameter)dbParameter).Scale = parameter.Scale; ((IDbDataParameter)dbParameter).Precision = parameter.Precision; dbParameter.Value = parameterValue; cmd.Parameters.Add(dbParameter); }
protected override object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance) { var type = this.GetResultType(ctx, resultType, resultInstance, null); if (type != null && !typeof(Array).IsAssignableFrom(type)) { throw new DataException("要求返回的类型不正确"); } var elementType = type?.GetElementType(); var list = new ArrayList(); using (var reader = command.ExecuteReader(CommandBehavior.SingleResult)) { while (reader.Read()) { var result = this.ObjectMapper.Mapping(ctx.Statement, reader.ToDictionary(), elementType, null); list.Add(result); } } return(elementType == null?list.ToArray() : list.ToArray(elementType)); }
protected override IPaginateResult ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type elementType) { var result = new PaginateResult(); using (var reader = command.ExecuteReader(CommandBehavior.Default)) { if (reader.Read()) { result.Count = Convert.ToInt32(reader[0]); } var list = new ArrayList(); if (reader.NextResult()) { while (reader.Read()) { list.Add(reader.ToDictionary()); } } result.Items = list.ToArray(); } return(result); }
protected virtual string GetCacheKey(IDataCacheSetting setting, IDbExecuteContext ctx) { var cacheKey = setting.CacheKey; if (string.IsNullOrEmpty(cacheKey)) { cacheKey = ctx.Statement.Name; } var key = cacheKey + ":"; var parameters = setting.Parameters; if (string.IsNullOrEmpty(parameters)) { key += ctx.Parameters.ToString(null); } else { key += ctx.Parameters.ToString(parameters.Split(','), null); } return(key); }
protected virtual object HandleOutputOrReturnValue(IDbExecuteContext ctx, Type resultType, object resultInstance, DbCommand cmd, object executedResult) { //此方法由实现者自行调用,大部分情况下只有<see cref="NoneResultHandler" />会调用 foreach(DbParameter dp in cmd.Parameters) { if(dp.Direction == ParameterDirection.InputOutput || dp.Direction == ParameterDirection.Output || dp.Direction == ParameterDirection.ReturnValue) { var ps = ctx.Statement.Parameters.SingleOrDefault(x => string.Compare(x.ParameterName, dp.ParameterName, StringComparison.InvariantCultureIgnoreCase) == 0); if(ps == null) { continue; } if(dp.Direction == ParameterDirection.ReturnValue) { //返回参数 executedResult = dp.Value; } else { var valueWrap = ctx.Parameters[ps.Name] as IObjectWrap; if(valueWrap == null) { continue; } valueWrap.ChangeValue(dp.Value); } } } return executedResult; }
public virtual DbCommand GetCommand(IDbExecuteContext ctx) { var wrap = ctx.CommandWrap; var statement = ctx.Statement; var cmd = wrap.Command; cmd.CommandType = statement.CommandType; cmd.CommandTimeout = statement.Timeout; var parameterValues = ctx.Parameters; var commandText = this.GetCommandText(ctx, statement, parameterValues); foreach(var parameter in statement.Parameters) { var parameterValue = parameterValues[parameter.Name]; if (parameter.Expandable) { //符合可扩展条件 var array = parameterValue as Array; if (array != null) {//数组 for (var i = 0; i < array.Length; i++) { commandText = this.BuildParameter(ctx, parameter, parameter.ParameterName + i, array.GetValue(i), commandText, cmd); } } else if(parameterValue != null) {//尝试转换成IDictionary形式 var dict = parameterValue.ToDictionary(); foreach (var key in dict.Keys) { var pn = Convert.ToString(key); if (string.IsNullOrEmpty(pn)) { continue; } this.BuildParameter(ctx, cmd, parameter, pn, dict[key]); } }//否则此选项无效 } else { commandText = this.BuildParameter(ctx, parameter, parameter.ParameterName, parameterValue, commandText, cmd); } } cmd.CommandText = commandText; var dataService = ctx.DataService; if(dataService is DataServiceBase && ((DataServiceBase)dataService).Debug) { LogService.WriteLog(this, LogLevel.DEBUG, commandText + "\r\n" + JsonHelper.ToJson(parameterValues, false)); } return cmd; }
protected virtual IPaginateResult ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type elementType) { PaginateResult result; if(elementType == null) { result = new PaginateResult(); } else { var type = typeof(PaginateResult<>); var instanceType = type.MakeGenericType(elementType); result = (PaginateResult)TypeHelper.CreateObject(instanceType, null, true); } using (var reader = command.ExecuteReader(CommandBehavior.Default)) { if (reader.Read()) { result.Count = Convert.ToInt32(reader[0]); } var list = new ArrayList(); if(reader.NextResult()) { while (reader.Read()) { list.Add(this.ObjectMapper.Mapping(ctx.Statement, reader.ToDictionary(), elementType, null)); } } result.Items = elementType != null ? (object[])list.ToArray(elementType) : list.ToArray(); } return result; }
protected virtual string GetCommandText(IDbExecuteContext ctx, IStatementSetting statement, IDictionary parameterValues) { return statement.StatementText.GetCommandText(statement, parameterValues); }
protected abstract object ExecuteResultInternal(IDbExecuteContext ctx, DbCommand command, Type resultType, object resultInstance);
object IResultHandler.ExecuteResult(IDbExecuteContext ctx, Type resultType, object resultInstance) { return this.ExecuteResult(ctx, resultType, resultInstance); }
void IDbTracing.OnLoadingData( IDbExecuteContext context ) { events.Add( new TraceEventDescriptor( "OnLoadingData", DateTime.UtcNow ) ); executionStopwatch.Stop(); ExecutionTime = executionStopwatch.Elapsed; }
object IResultHandlerFactory.ExecuteResult(IDbExecuteContext ctx, Type resultType, object resultInstance) { return(this.FactoryExecuteResult(ctx, resultType, resultInstance)); }
protected virtual object ExecuteResult(IDbExecuteContext ctx, Type resultType, object resultInstance) { var cmd = this.GetDbCommand(ctx); var result = this.ExecuteResultInternal(ctx, cmd, resultType, resultInstance); return result; }
protected virtual Type GetResultType(IDbExecuteContext ctx, Type resultType, object resultInstance, Type defaultType) { return ResultHandlerFactory.GetResultType(ctx, resultType, resultInstance, defaultType); }
protected virtual DbCommand GetDbCommand(IDbExecuteContext ctx) { return ctx.DataStorage.GetCommand(ctx); }
public AsyncDbExecuteContextWrapper(IDbExecuteContext context) { Context = context; }
protected virtual object ExecuteResult(IDbExecuteContext ctx, Type resultType, object resultInstance) { return(this.ResultHandlerFactory.ExecuteResult(ctx, resultType, resultInstance)); }
public virtual DbCommand GetCommand(IDbExecuteContext ctx) { var builder = this.GetCommandBuilder(ctx); return(builder.GetCommand(ctx)); }
protected virtual Type GetResultType(IDbExecuteContext ctx, Type resultType, object resultInstance, Type defaultType) { return(ResultHandlerFactory.GetResultType(ctx, resultType, resultInstance, defaultType)); }
public void OnLoadingData(IDbExecuteContext context) { Assert.IsNotNull(context); logger.LogInfo("OnLoadingData"); }
protected virtual DbCommand GetDbCommand(IDbExecuteContext ctx) { return(ctx.DataStorage.GetCommand(ctx)); }