If I have a one-to-many relationship and I want to transorm this into a list of flat Dto-s where some attributes of parent and some of child appear in a dto, is this something that is supported out-of-box with AutoMapper? For example if I have something like this
Parent
1. ParentId
2. ParentAttr1
3. List<Child>
Child
1. ChildId
2. ChildAttr1
2. ChildAttr2
Dto
1. ParentId
2. ChildId
2. ChildAttr1
3. ChildAttr2
How do I project Parent into a Dto where for each child in parent I will get an instace of Dto?
I've setup two maps Parent->Dto and Child->Dto but just doing _mapper.Map(parentInstance) only projects parents attributes. Does this have to be done in two steps, where I would iterate children myself?
One option is like this:
List viewModel = new List();
        foreach (var bp in mktgPlan.AllowedBaseProducts)
        {
            var baseProduct = bp;
            foreach (var cip in baseProduct.CoInsurancePercentages)
            {
                var coInsurance = cip;
                var dto = _mapper.Map<MarketingPlanBaseProduct, CoInsuranceDto>(baseProduct);
                _mapper.Map(coInsurance, dto);
                viewModel.Add(dto);
            }
        }
Other option if relationship is bi-directional would be to select all children and than map children only like this:
 var coInsurances = mktgPlan.AllowedBaseProducts.SelectMany(x => x.CoInsurancePercentages);
            var viewModel =
                _mapper.Map<IEnumerable<BaseProductCoInsurance>, List<CoInsuranceDto>>(coInsurances;