AutoMapper
'da Inheritance'ı nasıl kullanacağımı inceledim ancak Linq
ile tam olarak çalışmayı düşünüyorum. Benim burada eşleştirmeleri tanımladıktanAutoMapper devralma ve Linq
:
CreateMap<Article, ArticleDetailsViewModel>()
.Include<Article, ArticleNewsItemDetailsViewModel();
CreateMap<Article, ArticleNewsItemDetailsViewModel>();
ArticleDetailsViewModel
ArticleNewsItemDetailsViewModel
bir taban sınıfıdır İşte benim kodudur. Ben olsaydı
CreateMap<ArticleNewsItem, ArticleNewsItemDetailsViewModel>();
görünümü modelinde özelliklerinin tamamı kendi Linq nesne meslektaşı ile aynı adı olduğu için otomatik olarak harita olacaktır. Ancak, bu mümkün değildir Article => ArticleNewsItemDetailsViewModel
eşleme kullanıyorum çünkü bunun yerine tanımlamak zorunda kalacak biri olarak her:
.ForMember(x => x.Property1, opt => opt.MapFrom(src => src.ArticleNewsItem.Property1)
Ben yeni bir görünüm modeline ArticleNewsItemDetailsViewModel
tüm özelliklerini hareketli ve o sınıfı olması hakkında düşünce ArticleNewsItemDetailsViewModel
içinde bir özellik ve bu iki nesne arasında bir eşleşme olduğu sürece o zaman işe yarayacaktır, ama çok temiz hissetmez.
Bunu yapmaktan kaçınmanın bir yolu var mı? Kafamda bu basitleştirme üzerinde değilim ama sadece Sözünü doğrudan ilişkilendirmenin ekleyemezsiniz eğer
Bunun işe yaramaz bir özelliği, bir iç içe nesnede bir özelliği eşleyen bir özellik olduğu için işe yaramaz.Yuvalanmış bir nesneye eşleme nesnesi olmayan bir özellik – ediblecode
Üzgünüz, yanlış anlaşıldım. Bir nesneyi '.ConstructUsing()' veya '.ConvertUsing()' yöntemleri aracılığıyla özel bir harita oluşturmadan yuvalanmış bir özelliğe eşleyemezsiniz. Gerçekten benzer bir harita çizmelisin. İşte iyi bir örnek: http://automapper.codeplex.com/wikipage?title=Nested%20Mappings – NinjaNye
Soruyu anlamak için teşekkürler. Bununla birlikte, MapTMrt kullanarak haritalamayı tanımlamaya gerek yoktur, çünkü .ForMember kullanılarak ve yuvalanmış özelliklere erişilebilmektedir. – ediblecode