繁体   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