[英]How to configure automapper to map from two source objects to a destination object?
我在使用自動映射器時遇到問題。 我不知道如何執行此操作,並且一直在尋找並嘗試不同的解決方案。 如果有人可以幫助我,我將不勝感激。
所以這里是問題,我有兩種源類型,如下所示:
public class User
{
public string Name {get; set;}
public int Id {get; set;}
}
public class Product
{
public int UserId {get; set;}
public int Id {get; set;}
public double Price{get; set;}
}
我想將這兩個映射到UserData類型的目標:
public class UserData
{
public string UserName{get; set;}
public int UserId {get;set;}
public List<Product> PurchasedProducts {get; set;}
}
謝謝
我使用“自定義值解析器”來完成這項工作。 但我認為這不是最佳解決方案,因為解析程序直接取決於存儲庫。 無論如何,這就是我所做的:
Mapper.CreateMap<Product, Dtos.Product>();
Mapper.CreateMap<User, UserData>()
.ForMember(dest => dest.UserName, opt => opt.MapFrom(src => src.Name))
.ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.Id))
.ForMember(dest => dest.PurchasedProducts, opt =>
opt.ResolveUsing<User_Products_Resolver>());
Mapper.AssertConfigurationIsValid();
我實現了自定義解析器,如下所示:
public class User_Products_Resolver : ValueResolver<User, List<Product>>
{
protected override List<Product> ResolveCore(User userObj)
{
var productRepo = new ProductRepository();
var r = productRepo.Get(p => p.UserId == userObj.Id)
.ToList<Product>();
return r;
}
}
同樣,我不確定這是否是正確的方法。 如果有人知道更好的方法,請告訴我。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.