private DynamicParameters CreateParameters(ISqlRequest request) { var parameters = new DynamicParameters(); foreach (var parameter in request.Parameters) { var simple = parameter as StoredProcedureSimpleParameter; if (simple != null) { var value = simple.GetValueAsObject(); value = DefaultValueConverter.Convert(value, simple.TypeName); parameters.Add(simple.Name, value, direction: simple.Mode); continue; } var table = parameter as StoredProcedureTableTypeParameter; if (table != null) { var typeName = string.Format("{0}.{1}", table.SchemaName, table.UdtName); parameters.Add(table.Name, table.Table.ToDataTable(typeName).AsTableValuedParameter(typeName)); continue; } throw new InvalidOperationException("Invalid parameter type: " + parameter.GetType()); } return(parameters); }
public void NonQuery(ISqlRequest request) { Debug.WriteLine("NonQuery START."); _executor.NonQuery(request); Debug.WriteLine("NonQuery STOP."); }
public IMultipleResultSetReader Multiple(ISqlRequest request) { Debug.WriteLine("Multiple START."); var result = new ConsoleLoggerMultipleResultSetReader(_executor.Multiple(request)); Debug.WriteLine("Multiple STOP."); return(result); }
public T Scalar <T>(ISqlRequest request) { Debug.WriteLine("Scalar START (" + typeof(T).ToString() + ")."); var result = _executor.Scalar <T>(request); Debug.WriteLine("Scalar STOP (" + result + ")."); return(result); }
public void NonQuery(ISqlRequest request) { CreateConnection(); var parameters = CreateParameters(request); var result = _connection.Query <int>( string.Format("{0}.{1}", request.SchemaName, request.StoredProcedureName), parameters, commandType: CommandType.StoredProcedure, transaction: _transaction); FetchParameterValue(request, parameters); }
public ISqlExecutor CreateExecutor(ISqlRequest request) { Func<ISqlRequest, ISqlExecutor> mw = null; for (int i = Middleware.Count - 1; i >= 0; i--) { mw = Middleware[i].Execute(mw); } if (mw == null) throw new InvalidOperationException("Cannot create executor, have you added an executor to the pipeline?"); return mw(request); }
private void FetchParameterValue(ISqlRequest request, DynamicParameters parameters) { request .Parameters .OfType <StoredProcedureSimpleParameter>() // We need simple parameters .ToList() .ForEach(p => { // Retrieve the new parameter value from the executed stored proc var value = parameters.Get <object>(p.Name); p.SetValueAsObject(value); }) ; }
public T Scalar <T>(ISqlRequest request) { CreateConnection(); var parameters = CreateParameters(request); var result = _connection.Query <T>( string.Format("{0}.{1}", request.SchemaName, request.StoredProcedureName), parameters, commandType: CommandType.StoredProcedure, transaction: _transaction); FetchParameterValue(request, parameters); return(result.Any() ? result.First() : default(T)); }
public IMultipleResultSetReader Multiple(ISqlRequest request) { CreateConnection(); var parameters = CreateParameters(request); var reader = _connection.QueryMultiple( string.Format("{0}.{1}", request.SchemaName, request.StoredProcedureName), parameters, commandType: CommandType.StoredProcedure, transaction: _transaction); FetchParameterValue(request, parameters); return(new MultipleResultSetReader(reader)); }
public IEnumerable <T> Query <T>(ISqlRequest request) { Debug.WriteLine("Query START (" + typeof(T).ToString() + ")."); var result = _executor.Query <T>(request); Debug.WriteLine("ITEMS:"); foreach (var a in result) { Debug.WriteLine("ITEM: " + a.ToString()); } Debug.WriteLine("/ITEMS"); Debug.WriteLine("Query STOP."); return(result); }