Micro ORM‘lerin Kralı- Dapper Nedir?

Ali Yıldızöz
SDTR
Published in
2 min readMar 13, 2019

Bir Micro ORM Olan Dapper’ı diğer ORM’lerden ayıran en büyük özelliği Ado.Net hızına yakın bir hızda çalışmasıdır.

Ado.Net ile arasında 2ms bir fark var.

Dapper, Stack overflow ekibi tarafından LightWeight(Arka tarafta herhangi bir mapping işlemi veya konfigürasyonu yapmaz) olarak geliştirilmiş Github ta open source yayınlanan bir ORM( Object Relationship Mapper) aracıdır. Çoğu veritabanına desteği vardır(SQL Server,MySQL..v.b).

Ado.Net’te sorgularımızı veya prosedürlerimizi SqlDataReader, SqlCommand v.b nesneleri kullanarak gerçekleştiririz. Dapper,bu nesneleri yazma yükünü bizden alıyor. Generic ve extension olan metotlarını kullanarak filtreleme işlemlerimizi yapabiliriz. Daha az kod yazarak sorgularımızı kısa sürede execute edip istediğimiz tipe çevirebiliriz.

Bu yazımda size Dapper’ın Query ve Execute fonksiyonlarından bahsedeceğim.

Örneklere geçmeden önce nasıl kuracağımıza bakalım.

NuGet ‘dan yukardaki paketi projenize ekleyebilirsiniz.

Önce Data Modelimizi oluşturalım.

“DapperMicroOrm” adında bir veritabanının içine “OgrenciTanim” adında bir tablo oluşturdum.

Burada dikkat etmemiz gereken bir husus var tablolarımızın kolonlarını veritabanında nasıl isimlendirdiysek Data Modellerimizde de o şekilde ayarlamalıyız aksi halde Data Modellerimiz, tablolarımız ile eşleşmeyecektir.

Execute: Dapper’ın bu fonksiyonu sayesinde sorgularımızı direkt gönderebildiğimiz gibi Ado.Net’teki gibi parametreleri tek tek eklememize de gerek kalmıyor. Fonksiyonumuzun ikinci parametresi, object bir veri istediği için her veriyi hatta birden fazla veriyi, ister isimsiz tipte isterseniz Data Modeliniz ile içeriye parametre geçebilirsiniz.

Görselde her iki kullanım şeklini de görebilirsiniz.

Yukarıdaki örnekte olduğu gibi parametreleri Dapper eşleştiriyor bizim elle girmemize gerek kalmıyor.

Query: Bu fonksiyon generic ve extension bir fonksiyondur.İki kullanım şekli mevcuttur.

1)Eğer elimizde bir tip(Data Model) varsa IEnumerable<tip> interfacesini implement etmiş bir koleksiyon ile verilerimizi çekebilir filtreleme işlemlerimizi yapabiliriz.

2)Elimizde tip yoksa fonksiyonumuz standart bir kullanım olarak verilerimizi, IEnumerable<dynamic> interfacesini implement etmiş bir koleksiyon üzerine alır. Bu interface, dynamic keywordu üzerinden çalıştığı için çalışma anında verilerimiz isimsiz bir tipte koleksiyona aktarır. Bu sayede koleksiyonumuz üzerinden filtre işlemlerimizi yapabiliriz.

Görselde her iki kullanım şeklini de görebilirsiniz.

Daha ayrıntılı bakmak istiyorsanız Dapper’ın kendi sitesine gitmek için tıklayınız.

Son olarak çok büyük datalarla çalışıyorsanız, diğer ORM’ler size yavaş geliyorsa, Ado.Net gibi uzun uzun kod yazmak istemiyor ama aynı zamanda Ado.Net kadar hızlı bir ORM istiyorsanız Dapper tamda istediğiniz ORM aracı olabilir.

--

--