.net Core AutoMapper Kullanımı

Yasin DALKILIÇ
2 min readJan 25, 2021

--

.netCore AutoMapper Kullanımı

c# kullanırken bazı durumlarda database içerisinden aldığımız verinin tüm alanlarıyla birlikte Client tarafına göndermek istemeyiz, örneğin kullanıcının sadece adı ve soyadını gösterdiğimiz bir sayfada kullanıcın diğer bilgilerinin de Client’a gönderilmesi maaliyetli olabilmektedir bu sorundan kurtulmak için DTO(Data Transfer Object) kullanılarak yeni bir sınıfa ilgili veriler maplenerek aktarılır ve Client’a yeni oluşturulan Model(Obje,Sınıf..) gönderilir. c# da bunun için AutoMapper paketini kullanıyor olacağız .Şimdi bir örnek yaparak daha iyi anlamaya çalışalım.

Proje Oluşturma

dotnet new webapi

diyerek boş bir webapi projesi oluşturuyorum. Projeyi oluşturduktan sonra

Dto(Data Transfer Object) adından bir sınıf kitaplığı oluşturuyorum, ve içerisine AutoMapping adında bir sınıf oluşturuyorum. Sınıfımı oluşturduktan sonra ilgili sınıf kitaplığıma gelip AutoMapper bağımlılığımı kuruyorum.

dotnet add package AutoMapper 

Automapping sınıfımı Profile sınıfından inherit ediyorum ve consturctor oluşturup UserDto dan User sınıfına ve User sınıfından UserDto sınıfına dönüştüreceğini belirtiyorum.

public class AutoMapping :Profile{public AutoMapping(){CreateMap<UserDto, User>().ReverseMap();}

burada dikkat edilmesi gereken örneğin UserDto sınıfımda ve User sınıfımdaki alanlar aynı isime sahipse yukarıdaki gibi yapmam yeterli olacaktır ama eğer ben UserDto sınıfımda örneğin username alanını kullaniciAdidiye geriye döndermek istersem onun için şu şekilde yapmamız gerekiyor

public class AutoMapping :Profile{public AutoMapping(){CreateMap<UserDto, User>().ForMember(dest => dest.username, opt => opt.MapFrom(src => src.kullaniciAdi)).ReverseMap();}

yukarıdaki işlemde destination olan nesnemdeki username alanının source nesnemdeki kullaniciAdi olacağını belirtiyorum.

İlgili işlemimi gerçekleştirdikten sonra startup.cs dosyama gelip

services.AddAutoMapper(typeof(AutoMapping));

servise auto mapper kullanacağımı söylüyorum ve ardından herhangi bir Controller’a gelip bağımlılığımızı enjecte ediyoruz.

private readonly IMapper _mapper;
public UserController(IMapper mapper)
{_mapper = mapper;}

bağımlılığımızı enject ettikten sonra istediğim herhangi bir yerde user nesnesini mapper’a verip verilen user nesnesini userDto nesnesine dönüştüreceğini söylüyorum.

User user=new User() // user alanları
var userDtoNesnesi=_mapper.Map<UserDto>(user);

görmüş olduğunuz gibi auto mapper ile bu işlemleri yapmak oldukça kolay.

Herkese İyi Çalışmalar Dilerim.

--

--

Yasin DALKILIÇ
Yasin DALKILIÇ

Written by Yasin DALKILIÇ

Hi, My name is Yasin I am a Software Developer, I love so much researching and development 😊 Here is my youtube channel @webciyasin

No responses yet