Dapper - Asenkron İşlemler (Dapper Async)

Dapper ORM ile veri tabanında bir çok sorgu operasyonları gerçekleştirebiliyoruz.  Dapper ORM'in ne olduğu hakkında fikir edinmek için önceki yazılarımın da bulunduğu aşağıdaki linkten faydalanabilirsiniz.

Dapper ORM Nedir?

Asenkron olarak işlemler yapmak istediğimiz durumlarda Dapper metotlarının Async ile biten versiyonları da mevcuttur. 

Asenkron metotların sonu Async ile biter. Dönüş tipi Task olmakla birlikte .NET'te bulunan async ve await keywordleri kullanılır. 

Execute ve Query metotlarının Asenkron versiyonları aşağıdaki gibidir. 

Metot Asenkron Karşılığı
Execute ExecuteAsync
ExecuteScalar ExecuteScalarAsync
ExecuteReader ExecuteReaderAsync
Query QueryAsync
QueryFirst QueryFirstAsync
QueryFirstOrDefault QueryFirstOrDefaultAsync
QuerySingle QuerySingleAsync
QuerySingleOrDefault QuerySingleOrDefaultAsync
QueryMultiple QueryMultipleAsync

Örnek kullanımlar için aşağıdaki örneklere göz atabilirsiniz.

QueryAsync

public static async Task<IEnumerable<Product>> ProductCategoryAsync()
{
using (var connection = DbConnect.Connection)
{
var query = @"SELECT * FROM dbo.Categories
INNER JOIN dbo.Products
ON dbo.Categories.CategoryID = dbo.Products.CategoryID";
var list = connection.QueryAsync<Product, Category, Product>(query, (urun, kat) =>
{
urun.CategoryId = kat.CategoryId;
return urun;
}, splitOn: "CategoryID");
return await list;
}
}
view raw QueryMethod.cs hosted with ❤ by GitHub


ExecuteAsync

public static async Task<int> AddOneCategoryAsync(Category category)
{
using (var connection = DbConnect.Connection)
{
var query = @"INSERT INTO [dbo].[Categories]([CategoryName],[Description])
VALUES (@CategoryName, @Description)";
return await connection.ExecuteAsync(query, new { CategoryName = category.CategoryName, Description = category.Description });
}
}
view raw ExecuteAsync.cs hosted with ❤ by GitHub


Asenkron metotların olduğu DapperAsyncMethods.cs dosyası, oluşturduğum Github repomda bulunmaktadır. İncelemek için buraya tıklayabilirsiniz.

Yorumlar