How to assign parent reference to a property in a child with AutoMapper
automapper
Solution
Use AfterMap. Something like this:
Mapper.CreateMap<ParentData, Parent>()
.AfterMap((s,d) => {
foreach(var c in d.Children)
c.Parent = d;
});
Problem
I'm trying to find a way of configuring AutoMapper to set a property in a destination object with a reference of its source parent object. The code below shows what I'm trying to achieve. I'm moving data into the Parent & Child instances from the data objects. The mapping works fine to create the List collection with correct data but I need to have a ForEach to assign the parent instance reference. ``` public class ParentChildMapper { public void MapData(ParentData parentData) { Mapper.CreateMap<ParentData, Parent>(); Mapper.CreateMap<ChildData, Child>(); //Populates both the Parent & List of Child objects: var parent = Mapper.Map<ParentData, Parent>(parentData); //Is there a way of doing this in AutoMapper? foreach (var child in parent.Children) { child.Parent = parent; } //do other stuff with parent } } public class Parent { public virtual string FamilyName { get; set; } public virtual IList<Child> Children { get; set; } } public class Child { public virtual string FirstName { get; set; } public virtual Parent Parent { get; set; } } public class ParentData { public string FamilyName { get; set; } public List<Child> Children { get; set; } } public class ChildData { public string FirstName { get; set; } } ```