Dapper Kullanımı: Yüksek Performanslı Micro-ORM Rehberi

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

Dapper: Yüksek Performanslı Micro-ORM ve SQL Kontrolü​


Dapper, ADO.NET'in üzerine inşa edilmiş bir kütüphanedir. EF Core gibi sizin yerinize SQL üretmez; tam tersine, sizin yazdığınız saf (raw) SQL sorgularını C# nesnelerine süper hızlı bir şekilde eşler (map eder). Bu yüzden ona "Micro-ORM" denir.



1. Neden Dapper Kullanmalıyız?​


EF Core harika bir araç olsa da, bazen çok karmaşık sorgularda veya binlerce satırlık işlemlerde yavaş kalabilir. Dapper şu üç noktada öne çıkar:


  • []Performans: Dapper, ADO.NET'ten sonra C# dünyasındaki en hızlı ORM'dir. Neredeyse saf bir SQL Reader hızıyla çalışır.
    []Kontrol: SQL sorgusunu siz yazdığınız için derleyicinin (ORM'in) üreteceği garip sorgularla uğraşmazsınız. Veritabanı optimizasyonu tamamen sizin elinizdedir.
  • Hafiflik: EF Core'daki gibi Change Tracking (değişim takibi) yoktur. Bu da bellek kullanımını minimuma indirir.



2. Temel Kullanım: Sorgu Çalıştırmak​


Dapper, IDbConnection arayüzüne genişletme metotları (extension methods) ekleyerek çalışır.

C#:
using Dapper;
using Microsoft.Data.SqlClient;

public class Urun
{
public int Id { get; set; }
public string Ad { get; set; }
public decimal Fiyat { get; set; }
}

// Kullanım örneği
using (var connection = new SqlConnection("Server=.;Database=UrunDb;Trusted_Connection=True;"))
{
// Veri Çekme (Query)
var sql = "SELECT * FROM Urunler WHERE Fiyat > @MinFiyat";
var urunler = connection.Query<Urun>(sql, new { MinFiyat = 1000 }).ToList();

foreach (var urun in urunler)
{
    Console.WriteLine($"{urun.Ad} - {urun.Fiyat}");
}

}



3. Veri Ekleme, Güncelleme ve Silme (Execute)​


Geriye bir liste dönmeyen işlemler için Execute metodu kullanılır.

C#:
var insertSql = "INSERT INTO Urunler (Ad, Fiyat) VALUES (@Ad, @Fiyat)";
var etkilenenSatir = connection.Execute(insertSql, new { Ad = "Monitör", Fiyat = 5000 });

Console.WriteLine($"{etkilenenSatir} adet kayıt eklendi.");



4. Dapper vs EF Core: Hangisini Seçmelisiniz?​


Modern projelerde genellikle her ikisi de beraber kullanılır (Hybrid Approach).

ÖzellikEntity Framework CoreDapper
HızHızlı (ama overhead var)Çok Hızlı (saf SQL hızı)
SQL BilgisiAz (LINQ yeterli)Yüksek (SQL bilmek şart)
Geliştirme HızıHızlı (Migration, CRUD otomatik)Orta (Sorguları manuel yazarsınız)
BakımKolay (Code-First avantajı)Orta (SQL'ler kod içinde veya dosyada)



Profesyonel İpucu: Dapper Ne Zaman Şarttır?​



  • []Eğer uygulamanız saniyede binlerce istek alıyorsa,
    []Raporlama ekranları gibi çok karmaşık ve devasa JOIN içeren sorgularınız varsa,
    []Legacy (eski) bir veritabanına bağlanıyorsanız ve EF Core'un Code-First yapısı tablo şemasıyla uyuşmuyorsa,
    []Dapper kesinlikle en iyi seçimdir.



Sonuç​


Dapper, "karmaşık ORM yapılarına ihtiyacım yok, bana hızı ve SQL kontrolünü ver" diyen yazılımcıların favorisidir. Öğrenmesi oldukça kolaydır çünkü aslında yaptığınız şey sadece temiz bir SQL yazıp onu bir nesneye bağlamaktır.
 
Geri
Üst