/// <summary> /// Execute the SQL query asynchronously and return the result. Use the provided result /// materializer to read the IDataReader and map to result objects. Maps internally to a /// call to IDbCommand.ExecuteReader() /// </summary> /// <typeparam name="T"></typeparam> /// <param name="runner"></param> /// <param name="query"></param> /// <param name="reader"></param> /// <returns></returns> public static T Query <T>(this ISqlRunner runner, ISqlQuerySimple query, IResultMaterializer <T> reader) { Argument.NotNull(runner, nameof(runner)); Argument.NotNull(query, nameof(query)); Argument.NotNull(reader, nameof(reader)); return(runner.Execute(c => new SqlQuerySimpleStrategy().Execute(query, reader, c, 0))); }
public T Execute <T>(ISqlQuery query, IResultMaterializer <T> queryReader, IExecutionContext context, int index) { context.StartSetupCommand(index); using var command = context.CreateCommand(); if (!SetupCommand(query, command)) { context.MarkAborted(); return(default);
public SqlQueryCombined(ISqlQuery query, IResultMaterializer <T> materializer, bool cacheMappings) { Argument.NotNull(query, nameof(query)); Argument.NotNull(materializer, nameof(materializer)); _query = query; _materializer = materializer; _cacheMappings = cacheMappings; }
public ISqlResultPromise <T> Add <T>(ISqlQuery query, IResultMaterializer <T> reader) { Argument.NotNull(query, nameof(query)); Argument.NotNull(reader, nameof(reader)); var promise = new SqlResultPromise <T>(); AddExecutor((c, i) => { var result = new SqlQueryStrategy(_interactionFactory).Execute(query, reader, c, i); promise.SetValue(result); }); return(promise); }
public static Task <T> QueryAsync <T>(this ISqlRunner runner, Func <IDataInteraction, bool> setup, IResultMaterializer <T> materializer) { Argument.NotNull(runner, nameof(runner)); Argument.NotNull(setup, nameof(setup)); Argument.NotNull(materializer, nameof(materializer)); return(runner.QueryAsync(SqlQuery.FromDelegate(setup, materializer))); }
/// <summary> /// Execute the SQL query asynchronously and passes the IDataReader to the provided /// results materializer to map to objects. Internally this calls /// IDbCommand.ExecuteReader() /// </summary> /// <typeparam name="T"></typeparam> /// <param name="runner"></param> /// <param name="query"></param> /// <param name="reader"></param> /// <returns></returns> public static Task <T> QueryAsync <T>(this ISqlRunner runner, ISqlQuery query, IResultMaterializer <T> reader, CancellationToken cancellationToken = new CancellationToken()) { Argument.NotNull(runner, nameof(runner)); Argument.NotNull(query, nameof(query)); return(runner.ExecuteAsync(c => new SqlQueryStrategy(runner.InteractionFactory).ExecuteAsync(query, reader, c, 0, cancellationToken))); }
public static ISqlQuery <T> FromDelegate <T>(Func <IDataInteraction, bool> setup, IResultMaterializer <T> materializer) => new SqlQueryFromDelegate <T>(setup, materializer);
public static ISqlQuery <T> Combine <T>(ISqlQuery query, IResultMaterializer <T> materializer, bool cacheMappings = false) => new SqlQueryCombined <T>(query, materializer, cacheMappings);
public static ISqlQuerySimple <T> Combine <T>(string sql, IResultMaterializer <T> reader, bool cacheMappings = false) => Combine(new SqlQuerySimpleFromString(sql), reader, cacheMappings);
public ISqlResultPromise <T> Add <T>(Func <IDataInteraction, bool> setup, IResultMaterializer <T> materializer) => Add(SqlQuery.FromDelegate(setup), materializer);