"Enter"a basıp içeriğe geçin

AutoMapper ile collection esleşmesi yaparken oluşturmak (re-create) değil varolan datayı düzenlemek

Kısaca sorundan bahsedeyim elimde bir entity var ve insert edildiği anda bir çok ek subclass da ekleniyor. Örneğin makale ve makalenin etiketleri gibi. Sorun: AutoMapper varolan bir nesneyi yeni instance veya varolan bir instance üzerinde değiştirerek ekleyebiliyor.

MainModel model= Mapper.Map<MainModel>(entity);

Bu bize yeni MainModel türünde veri dönderir ve map kurallarına göre eslesen alanları doldurur. Modelde olmayan nesneler Default değerleri alır. Edit yaptığımız senaryolarda genelde

Mapper.Map(model, entity);

Kullanırız ki bu bize entity üzerinde sadece modelde olan alanları değiştirme imkanı verir. Ancak sorun şu ki alt sıfırlar için varolanın üzerine ekle gibi bir özellik yok. bu da entity nesnemizde olup modelde olmayan değerlerimizin kaybı anlamına geliyor.

https://dotnetfiddle.net/Vf41J7

Veya gist hali https://gist.githubusercontent.com/mahmut-gundogdu/e545ac1bd9818c400c0a486fd266f47a/raw/2380f08c4bc6a86f0d8a5214a762a654f4b33760/SorununCozumu.cs

Çözümümüz: AutoMapper.Collection nuget paketi. Özetle iki collection arasında eslesme yapıyor ve varolan class diğeri üzerinde değiştererek dönüyor. Böylece sadece model nesnesinde olan değerler etkileniyor diğerleri null veya 0 (yani default değerleri) olmuyor.

https://dotnetfiddle.net/495XGl

veya gist hali https://gist.githubusercontent.com/mahmut-gundogdu/e545ac1bd9818c400c0a486fd266f47a/raw/2380f08c4bc6a86f0d8a5214a762a654f4b33760/SorununTemsil.cs

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir