I got this working using a Custom Value Resolver. But I don't think it is the best solution as the resolver is depending on the repository directly. Anyways here is what I did:
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();
And I implemented the custom resolver as follows:
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;
}
}
Again, I am not sure if this is the correct way to do this. If someone knows a better way, please do let me know.
thanks