Commit c8991137 authored by Marc Gravell's avatar Marc Gravell Committed by GitHub

Merge pull request #600 from Tornhoof/master

Add CommandDefinitions versions for async Query API
parents a482c56c 71899c03
...@@ -20,6 +20,34 @@ public async Task TestBasicStringUsageAsync() ...@@ -20,6 +20,34 @@ public async Task TestBasicStringUsageAsync()
arr.IsSequenceEqualTo(new[] { "abc", "def" }); arr.IsSequenceEqualTo(new[] { "abc", "def" });
} }
[Fact]
public async Task TestBasicStringUsageQueryFirstAsync()
{
var str = await connection.QueryFirstAsync<string>(new CommandDefinition("select 'abc' as [Value] union all select @txt", new {txt = "def"}));
str.IsEqualTo("abc");
}
[Fact]
public async Task TestBasicStringUsageQueryFirstOrDefaultAsync()
{
var str = await connection.QueryFirstOrDefaultAsync<string>(new CommandDefinition("select null as [Value] union all select @txt", new {txt = "def"}));
str.IsNull();
}
[Fact]
public async Task TestBasicStringUsageQuerySingleAsync()
{
var str = await connection.QuerySingleAsync<string>(new CommandDefinition("select 'abc' as [Value]"));
str.IsEqualTo("abc");
}
[Fact]
public async Task TestBasicStringUsageQuerySingleOrDefaultAsync()
{
var str = await connection.QuerySingleAsync<string>(new CommandDefinition("select null as [Value]"));
str.IsNull();
}
[Fact] [Fact]
public async Task TestBasicStringUsageAsyncNonBuffered() public async Task TestBasicStringUsageAsyncNonBuffered()
{ {
......
...@@ -168,6 +168,13 @@ public static Task<object> QueryFirstAsync(this IDbConnection cnn, Type type, Co ...@@ -168,6 +168,13 @@ public static Task<object> QueryFirstAsync(this IDbConnection cnn, Type type, Co
/// <summary> /// <summary>
/// Execute a single-row query asynchronously using .NET 4.5 Task. /// Execute a single-row query asynchronously using .NET 4.5 Task.
/// </summary> /// </summary>
public static Task<T> QueryFirstAsync<T>(this IDbConnection cnn, CommandDefinition command)
{
return QueryRowAsync<T>(cnn, Row.First, typeof(T), command);
}
/// <summary>
/// Execute a single-row query asynchronously using .NET 4.5 Task.
/// </summary>
public static Task<object> QueryFirstOrDefaultAsync(this IDbConnection cnn, Type type, CommandDefinition command) public static Task<object> QueryFirstOrDefaultAsync(this IDbConnection cnn, Type type, CommandDefinition command)
{ {
return QueryRowAsync<object>(cnn, Row.FirstOrDefault, type, command); return QueryRowAsync<object>(cnn, Row.FirstOrDefault, type, command);
...@@ -175,6 +182,13 @@ public static Task<object> QueryFirstOrDefaultAsync(this IDbConnection cnn, Type ...@@ -175,6 +182,13 @@ public static Task<object> QueryFirstOrDefaultAsync(this IDbConnection cnn, Type
/// <summary> /// <summary>
/// Execute a single-row query asynchronously using .NET 4.5 Task. /// Execute a single-row query asynchronously using .NET 4.5 Task.
/// </summary> /// </summary>
public static Task<T> QueryFirstOrDefaultAsync<T>(this IDbConnection cnn, CommandDefinition command)
{
return QueryRowAsync<T>(cnn, Row.FirstOrDefault, typeof(T), command);
}
/// <summary>
/// Execute a single-row query asynchronously using .NET 4.5 Task.
/// </summary>
public static Task<object> QuerySingleAsync(this IDbConnection cnn, Type type, CommandDefinition command) public static Task<object> QuerySingleAsync(this IDbConnection cnn, Type type, CommandDefinition command)
{ {
return QueryRowAsync<object>(cnn, Row.Single, type, command); return QueryRowAsync<object>(cnn, Row.Single, type, command);
...@@ -182,11 +196,24 @@ public static Task<object> QuerySingleAsync(this IDbConnection cnn, Type type, C ...@@ -182,11 +196,24 @@ public static Task<object> QuerySingleAsync(this IDbConnection cnn, Type type, C
/// <summary> /// <summary>
/// Execute a single-row query asynchronously using .NET 4.5 Task. /// Execute a single-row query asynchronously using .NET 4.5 Task.
/// </summary> /// </summary>
public static Task<T> QuerySingleAsync<T>(this IDbConnection cnn, CommandDefinition command)
{
return QueryRowAsync<T>(cnn, Row.Single, typeof(T), command);
}
/// <summary>
/// Execute a single-row query asynchronously using .NET 4.5 Task.
/// </summary>
public static Task<object> QuerySingleOrDefaultAsync(this IDbConnection cnn, Type type, CommandDefinition command) public static Task<object> QuerySingleOrDefaultAsync(this IDbConnection cnn, Type type, CommandDefinition command)
{ {
return QueryRowAsync<object>(cnn, Row.SingleOrDefault, type, command); return QueryRowAsync<object>(cnn, Row.SingleOrDefault, type, command);
} }
/// <summary>
/// Execute a single-row query asynchronously using .NET 4.5 Task.
/// </summary>
public static Task<T> QuerySingleOrDefaultAsync<T>(this IDbConnection cnn, CommandDefinition command)
{
return QueryRowAsync<T>(cnn, Row.SingleOrDefault, typeof(T), command);
}
private static Task<DbDataReader> ExecuteReaderWithFlagsFallbackAsync(DbCommand cmd, bool wasClosed, CommandBehavior behavior, CancellationToken cancellationToken) private static Task<DbDataReader> ExecuteReaderWithFlagsFallbackAsync(DbCommand cmd, bool wasClosed, CommandBehavior behavior, CancellationToken cancellationToken)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment