AutoMapper: Nesneler Arası Otomatik Eşleme (Mapping)

crazy_coder

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

AutoMapper: Nesneler Arası Otomatik Dönüşüm Rehberi​


AutoMapper, iki farklı nesne tipini birbirine bağlayan küçük ama çok güçlü bir kütüphanedir. Temel amacı, bir nesnedeki verileri alıp, benzer özelliklere sahip başka bir nesneye (genellikle DTO'lara) otomatik olarak kopyalamaktır.



1. Neden AutoMapper Kullanmalıyız?​


Veritabanı modellerinizi doğrudan dış dünyaya açmak güvenlik ve mimari açısından risklidir. Bu yüzden DTO kullanırız. Ancak manuel eşleme (mapping) can sıkıcıdır:

Manuel Eşleme (İstenmeyen):
C#:
var urunDto = new UrunDto {
Ad = urun.Ad,
Fiyat = urun.Fiyat,
KategoriAd = urun.Kategori.Ad // Karmaşık eşleme
};

AutoMapper ile Eşleme (İdeal):
C#:
var urunDto = _mapper.Map<UrunDto>(urun);


  • []Temiz Kod:** Kontrolcülerinizi (Controller) onlarca satır eşleme kodundan kurtarır.
    []Bakım Kolaylığı:** Eşleme kuralları tek bir merkezde (Profile) toplanır.
    [*]Hata Denetimi:** Eksik veya yanlış eşlemeleri test etmenize olanak tanır.




2. Kurulum ve Profil Tanımlama​


AutoMapper'ı kullanmak için öncelikle kurallarınızı belirlediğiniz bir Profile sınıfı oluşturmalısınız.

C#:
public class MappingProfile : Profile
{
public MappingProfile()
{
// Kaynak (Entity) -> Hedef (DTO)
CreateMap<Urun, UrunDto>()
// Eğer özellik isimleri farklıysa özel kural yazılabilir
.ForMember(dest => dest.KategoriIsmi, opt => opt.MapFrom(src => src.Kategori.Ad));
}
}



3. Dependency Injection ile Kayıt​


Modern .NET uygulamalarında AutoMapper'ı Program.cs içerisinde sisteme tanıtmanız gerekir:

C#:
builder.Services.AddAutoMapper(typeof(MappingProfile));



4. Controller İçinde Kullanım​


Artık IMapper arayüzünü enjekte ederek sınıflar arası dönüşümü tek satırda yapabilirsiniz.

C#:
public class UrunlerController : ControllerBase
{
private readonly IMapper _mapper;

public UrunlerController(IMapper mapper) { _mapper = mapper; }

[HttpGet]
public IActionResult Getir(int id)
{
    var urun = _urunServis.GetirById(id);
    
    // Entity'i otomatik olarak DTO'ya çeviriyoruz
    var urunDto = _mapper.Map<UrunDto>(urun);
    
    return Ok(urunDto);
}

}



AutoMapper vs Manuel Mapping​


KriterManuel MappingAutoMapper
Hız (Çalışma)En hızlı (doğrudan atama)Hızlı (Reflection/Expression Tree kullanır)
Kod KalabalığıÇok fazla satır kaplarMinimalist ve temiz
Hata YönetimiDerleme anında hata verirProfil hataları çalışma anında fark edilir



Sonuç​


AutoMapper, özellikle büyük ölçekli ve çok katmanlı mimarilerde (N-Tier, Clean Architecture) hayat kurtarıcıdır. Nesnelerinizi "eşleme hamallığından" kurtararak iş mantığına odaklanmanızı sağlar. Ancak çok basit, tek bir sınıflık projelerde kullanmak gereksiz bir bağımlılık yaratabilir; ihtiyaca göre seçmek en doğrusudur.
 
Geri
Üst