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.
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; | |
} | |
} |
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 }); | |
} | |
} |
Asenkron metotların olduğu DapperAsyncMethods.cs dosyası, oluşturduğum Github repomda bulunmaktadır. İncelemek için buraya tıklayabilirsiniz.
Yorumlar
Yorum Gönder