AutoMapper

AutoMapper

AutoMapper, karmaşık bir sournu çözmek için tasarlanmış basit ve küçük bir kütüphanedir. Temelde üstlendiği görev gayet yalındır, bir nesneyi diğer bir nesne ile eşleyen koddan kurtulmak için tercih ettiğimiz bir yapıdır. Bu tür bir eşleşme kodunu yazmak oldukça zahmetli ve sıkıcıdır, örneğin 2 ayrı tabloda tutuğumuz category ve product bilgilerini getirmek istiyoruz. Bu işlemi yerine getirebilmek için bir veri taransfer nesnesi (DTO) oluşturduğumuzu ve ihtiyacımızı karşılayacak özellikleri burada hayata geçirdiğimizi düşünelim. Bu senaryoda yapmamız gereken diğer bir işlem ise Linq to Entitiy sorgusu yazmak ve ihtiyacımız olan alanlar ile DTO'muzdaki alanları birbirlerine eşitlememiz gerekmektedir. Burada işlem kulağa gayet basit gelebilir özellikle örneğini verdiğimiz senaryoda lakin yaptığımız işler büyüdükçe select kısmında elle tek tek yazacağımız kodlarda yapılan iş ile eş zamanlı olarak büyükmektedir ve bu işlem epey zahmetli olacak ve kod okunabilirliği zafiyeti oluşarak, sorgu anlaşılabilirliği kaybolacaktır. Bu gibi durumlarda yapılan işeleme özel Data Transfer Object'leri yazıp bu objeleri entity'lerimiz ile automap aracı ile mapping işlemini yaparak işlerimizi kolaylaştırabilriz.

Edit işleminde DB'deki bilgileri DTO aracılığı ile UI'a çıkartır demiştik. işte auto mapper tam olarak DB'deki bilgilerin DTO üzerine yerleştirilmesi esnasında kullanılan bir yardımcıdır.Automapper kullanılması herhengi bir hata alınmaz ama çok fazla iş yükü olur.

AutoMapper, karmaşık bir sournu çözmek için tasarlanmış basit ve küçük bir kütüphanedir. Temelde üstlendiği görev gayet yalındır, bir nesneyi diğer bir nesne ile eşleyen koddan kurtulmak için tercih ettiğimiz bir yapıdır. Bu tür bir eşleşme kodunu yazmak oldukça zahmetli ve sıkıcıdır, örneğin 2 ayrı tabloda tutuğumuz category ve product bilgilerini getirmek istiyoruz. Bu işlemi yerine getirebilmek için bir veri taransfer nesnesi (DTO) oluşturduğumuzu ve ihtiyacımızı karşılayacak özellikleri burada hayata geçirdiğimizi düşünelim. Bu senaryoda yapmamız gereken diğer bir işlem ise Linq to Entitiy sorgusu yazmak ve ihtiyacımız olan alanlar ile DTO'muzdaki alanları birbirlerine eşitlememiz gerekmektedir. Burada işlem kulağa gayet basit gelebilir özellikle örneğini verdiğimiz senaryoda lakin yaptığımız işler büyüdükçe select kısmında elle tek tek yazacağımız kodlarda yapılan iş ile eş zamanlı olarak büyükmektedir ve bu işlem epey zahmetli olacak ve kod okunabilirliği zafiyeti oluşarak, sorgu anlaşılabilirliği kaybolacaktır. Bu gibi durumlarda yapılan işeleme özel Data Transfer Object'leri yazıp bu objeleri entity'lerimiz ile automap aracı ile mapping işlemini yaparak işlerimizi kolaylaştırabilriz.

Proje içerisinde

Kendi projemde oluşturduğum mapping classı aşağıdadır. Bu classda AppUser varlığından tamamen Busines odaklı oluşturduğum 4 tane dto ve diğer dto lar görülecektir. Kodlamaya başlamadan önce ilk yapmamız gereken Nuget Packet Managerdan Automapper paketini indirmektir. Mapping classının işlemlerine yürütmesini AutoMapper paketi sağlar.

İkinc kısımda ise DTO nun nasıl kullanıldığı görülecektir.

Automapper kullanılması zorunlu değil ama iş yükümüzü azaltır demiştik. Add Tweet işlemini AutoMaper olmadan yapalım. Farklı inceleyelim.

Fotoğrafta görülecektir ki; 1 satırda yapılması gerken işlem 5 satır da yapılmıştır. ki bu işleme göre deşiklik gösterir.

Last updated