簡體   English   中英

如何配置自動映射器從兩個源對象映射到目標對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM