ASP.NET Core MVC Auto Mapper Kullanımı

Bu makelemizde sizlerle birlikte ASP.NET Core MVC uygulamalarında, Mapper kavramını inceleyeceğiz.Öncelikle kullanıcağımız kütüphane AutoMapper olacaktır.Geliştirmekte olduğumuz uygulamalarımızda Data Accsess katmanının kullandığı Entitiy Object lerinin UI katmanı ile iletişim halinde olmasını veya kullanılmasını istemeyiz bunun yerine Data Transfer Objects nesneleri oluşturup iletişimi bu şekilde sağlarız.Bir çok geliştirici kapsamlı büyük ölçekli projelerini bu şekilde geliştirirler.

Biz bu makalemizde AutoMapper kütüphanesinin kullanım şekillerini öğreneceğiz.DTO (Data Transfer Objects) Entity nesnesi ile nasıl Set edilir, nasıl etkin bir biçimde kullanabilirim, tüm propertyleri tek tek el ile maplemek zorunda mıyım gibi soruların cevablarını arayacağız.

Daha önceki ASP.NET Core MVC Giriş makalemde bahsettiğim gibi ASP.NET Core MVC bizlere Dependency Injection yöntemini kullanmamıza olanak sağlıyor.Şimdi dilerseniz Mapperlara geçmeden önce nesnelerimizi oluşturalım.

namespace EmreShn.Entity
{
    public class Personel {
public string Adi { get; set; }
public string Soyadi { get; set; }
}

namespace EmreShn.DataTransferObject
{
public class PersonelDto {
public string Adi { get; set; }
public string Soyadi { get; set; }
}

Property isimleri aynı olacak şekilde Entity ve DTO (Data Transfer Object) nesnelerini oluşturduk.Şimdi projemize AutoMapper kütüphanesini Nuget üzerinden eklememiz gerekecek.Aşağıda bulunan kodu Package Manager Console üzerinden çalıştırabilirsiniz.


Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection

Kurulum işlemi tamamlandıktan sonra proje içerisinde bir Profile oluşturmamız gerekiyor.

public class MappingProfile : Profile
{

public MappingProfile()
{ CreateMap<Personel,PersonelDto>();
CreateMap<PersonelDto,Personel>();
}

}

Yukarıda bulunan kod bloğunu dikkatli bir şekilde incelediğinizde “MappingProfile” isimli class’ımızı “Profile” sınıfından türettiğimizi görebilirsiniz.Daha sonra oluşturmuş olduğumuz Constructor içerisinde CreateMap Methodunu kullanarak eşleştirme profillerini çok kolay bir şekilde gerçekleştiriyoruz.Burada dikkat ettiyseniz eğer her iki senaryo içinde eşleştirme tanımlamaları yapıldı.Şöyle düşünebilirsiniz Personel sınıfından PersonelDto sınıfına, PersonelDto sınıfından Personel sınıfına eşleştir gibi.Her iki senaryoyuda “MappingProfile” classımıza tanımladık.

AutoMapper Kullanımı
Şimdi gelin oluşturmuş olduğumuz bu senaryoya göre sonuçları inceleyelim her makalede defalarca bahsettiğim gibi ilk önce kullanmak istediğimiz Servisleri Startup.cs sınıfına eklememiz, tanımlamamız gerekmektedir.

public void ConfigureServices(IServiceCollection services)
{
    services.AddAutoMapper();

}

View içerisinde PersonelDto sınıfının kullanıldığı bir senaryoda eşleştirme aşağıdaki şekilde yapılmaktadır.

public IActionResult Insert(PersonelDto personelView)
{

     var obj =_mapper.Map<Personel>(personelView); return View();
}

“obj” isimli nesnemiz Map edilmiş şekilde gelecektir.Anlaşılacağı üzere herhangi bir Set işlemi gerçekleştirmeden Mapping işlemini tamamlamış olduk ve kod karmaşından büyük ölçüde kurtulmuş olduk.


Bir sonraki makelede görüşmek üzere...

İlginizi Çekebilir

Yorum Yap