예제 #1
0
 /// <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)));
 }
예제 #2
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);
예제 #3
0
 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;
 }
예제 #4
0
        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);
        }
예제 #5
0
 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)));
 }
예제 #6
0
 /// <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)));
 }
예제 #7
0
 public static ISqlQuery <T> FromDelegate <T>(Func <IDataInteraction, bool> setup, IResultMaterializer <T> materializer)
 => new SqlQueryFromDelegate <T>(setup, materializer);
예제 #8
0
 public static ISqlQuery <T> Combine <T>(ISqlQuery query, IResultMaterializer <T> materializer, bool cacheMappings = false)
 => new SqlQueryCombined <T>(query, materializer, cacheMappings);
예제 #9
0
 public static ISqlQuerySimple <T> Combine <T>(string sql, IResultMaterializer <T> reader, bool cacheMappings = false)
 => Combine(new SqlQuerySimpleFromString(sql), reader, cacheMappings);
예제 #10
0
 public ISqlResultPromise <T> Add <T>(Func <IDataInteraction, bool> setup, IResultMaterializer <T> materializer)
 => Add(SqlQuery.FromDelegate(setup), materializer);