Dapper ile İç İçe(Nested) Nesneleri Mapleme Örneği

Hakan Topuz
2 min readNov 1, 2018

--

Merhabalar,

Öncelikle Dapper’dan biraz bahsedelim.Dapper sıkça kullanılan bir micro orm’dir.StackoverFlow geliştiricileri tarafından yazılmıştır.Micro orm’ler arasında en hızlılardan biridir.Bu sebeple çokça tercih edilir.

Dapper, tek bir dll den oluşur.LightWeight(mapleme yapmak için konfigürasyon dosyasına ihtiyaç duymaz) dır.Basit ve hızlıdır.Entity Framework’te olduğu gibi bize query yazma imkanı sağlamaktadır.

Şimdi dapper ile, ilişkili nesneleri nasıl mapleyeceğimizi görelim.Bu konuda bir yazı yazmayı düşünmüyordum aslında.Fakat bir telefon mülakatında böyle bir soru gelince, ki bende dapper ile daha önce böyle bişey yapmamıştım.Merak edip araştırdım ve sizlerle de paylaşmak istedim.

Bu arada Dapper’ı Nuget ten projenize dahil edebilirsiniz.

Kodlamaya geçecek olursak, ben database olarak meşhur Northwind database’ini kullandım.Bu database’deki Order ve OrderDetails tablolarını Dapper ile birbirine map li bir şekilde çağıracağım.

Öncelikle .Net tarafında nesnelerimizi oluşturalım.

Görüldüğü üzere bir Orders nesnemiz var.Bu nesnenin içinde liste olarak OrderDetails nesnesi mevcut.İlgili order ve bu order’ın detay verileri.Birbirleri ile OrderID üzerinden one to many ilişkiye sahipler.

Şimdi mapleme işlemine geçelim.

Connectionstring’i web.config’te tanımlayarak database erişimini sağlıyoruz.

Kodun içerisinde commentlerle ne yapıldığını belirttim.Sonuç olarak şu şekilde bir görüntü ortaya çıkmaktadır.

İç içe(nesned) nesneleri Dapper ile bu şekilde gayet hızlı ve basit bir şekilde mapleyebiliriz.Bu arada Dapper kullanımı içinde bir örnek yapmış olduk.İçerisine ilgili query yi yazarak istediğiniz verileri mapleyebilirsiniz.

Açıkçası daha önce yapmış olduğum projelerde, Entity Framework’ün ağır kaldığı yerlerde Dapper kullanmayı tercih etmiştik.Bir projeyi tümüyle Dapper ile yapmak, çok büyük veriler ile uğraşmıyorsanız biraz zahmetli oluyor bana göre.

Böylelikle bir yazımızın daha sonuna geldik.

Mutlu kodlamalar.

--

--