异步
描述
Dapper还使用了Async(异步)方法扩展了IDbConnection接口:
- ExecuteAsync
- QueryAsync
- QueryFirstAsync
- QueryFirstOrDefaultAsync
- QuerySingleAsync
- QuerySingleOrDefaultAsync
- QueryMultipleAsync
我们只在本教程中添加了非异步版本,以便于阅读。
ExecuteAsync
var sql = "Invoice_Insert";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var affectedRows = connection.ExecuteAsync(sql,
new {Kind = InvoiceKind.WebInvoice, Code = "Single_Insert_1"},
commandType: CommandType.StoredProcedure)
.Result;
}
QueryAsync
var sql = "Invoice_Insert";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoices = connection.QueryAsync<Invoice>(sql).Result.ToList();
}
QueryFirstAsync
var sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoice = connection.QueryFirstAsync<Invoice>(sql, new {InvoiceID = 1}).Result;
}
QueryFirstOrDefaultAsync
var sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoice = connection.QueryFirstOrDefaultAsync<Invoice>(sql, new {InvoiceID = 1}).Result;
}
QuerySingleAsync
var sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoice = connection.QuerySingleAsync<Invoice>(sql, new {InvoiceID = 1}).Result;
}
QuerySingleOrDefaultAsync
var sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
var invoice = connection.QuerySingleOrDefaultAsync<Invoice>(sql, new {InvoiceID = 1}).Result;
}
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();
}
}