Dapper - Async
Descripción
Dapper también extiende la interfaz IDbConnection con métodos asíncronos (asíncronos):
- EjecutarAsync
- QueryAsync
- QueryFirstAsync
- QueryFirstOrDefaultAsync
- QuerySingleAsync
- QuerySingleOrDefaultAsync
- QueryMultipleAsync
Solo agregamos una versión no asíncrona en este tutorial para que sea más fácil de leer.
EjecutarAsync
string sql = "INSERT INTO Customers (CustomerName) Values (@CustomerName);";
using (var connection = new SqlCeConnection("Data Source=SqlCe_W3Schools.sdf"))
{
var affectedRows = connection.ExecuteAsync(sql, new ).Result;
Console.WriteLine(affectedRows);
var customer = connection.Query<Customer>("Select * FROM CUSTOMERS WHERE CustomerName = 'Mark'").ToList();
FiddleHelper.WriteTable(customer);
}
include component-try-it.html href = 'https: //dotnetfiddle.net/2rVSi0'%}
QueryAsync
string sql = "SELECT TOP 10 * FROM OrderDetails";
using (var connection = new SqlCeConnection("Data Source=SqlCe_W3Schools.sdf"))
{
var orderDetails = connection.QueryAsync<OrderDetail>(sql).Result.ToList();
Console.WriteLine(orderDetails.Count());
FiddleHelper.WriteTable(orderDetails);
}
include component-try-it.html href = 'https: //dotnetfiddle.net/X79bZI'%}
QueryFirstAsync
string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
using (var connection = new SqlCeConnection("Data Source=SqlCe_W3Schools.sdf"))
{
var orderDetail = connection.QueryFirstAsync<OrderDetail>(sql, new {OrderDetailID = 1}).Result;
FiddleHelper.WriteTable(new List<OrderDetail>() { orderDetail } );
}
include component-try-it.html href = 'https: //dotnetfiddle.net/7Jbdcg'%}
QueryFirstOrDefaultAsync
string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
using (var connection = new SqlCeConnection("Data Source=SqlCe_W3Schools.sdf"))
{
var orderDetail = connection.QueryFirstOrDefaultAsync<OrderDetail>(sql, new {OrderDetailID = 1}).Result;
FiddleHelper.WriteTable(new List<OrderDetail>() { orderDetail } );
}
include component-try-it.html href = 'https: //dotnetfiddle.net/26NWaz'%}
QuerySingleAsync
string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
using (var connection = new SqlCeConnection("Data Source=SqlCe_W3Schools.sdf"))
{
var orderDetail = connection.QuerySingleOrDefaultAsync<OrderDetail>(sql, new {OrderDetailID = 1}).Result;
FiddleHelper.WriteTable(new List<OrderDetail>() { orderDetail } );
}
include component-try-it.html href = 'https: //dotnetfiddle.net/pmjYFp'%}
QuerySingleOrDefaultAsync
string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
using (var connection = new SqlCeConnection("Data Source=SqlCe_W3Schools.sdf"))
{
var orderDetail = connection.QuerySingleOrDefaultAsync<OrderDetail>(sql, new {OrderDetailID = 1}).Result;
FiddleHelper.WriteTable(new List<OrderDetail>() { orderDetail } );
}
include component-try-it.html href = 'https: //dotnetfiddle.net/WvbA02'%}
QueryMultipleAsync
var sql = "SELECT * FROM Invoice; SELECT * FROM InvoiceItem;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
using (var multi = connection.QueryMultipleAsync(sql, new { InvoiceID = 1 }).Result)
{
var invoice = multi.Read<Invoice>().First();
var invoiceItems = multi.Read<InvoiceItem>().ToList();
}
}