Подтвердить что ты не робот

Как назначить родительскую ссылку на свойство в дочернем элементе с помощью AutoMapper

Я пытаюсь найти способ настройки AutoMapper для установки свойства в целевом объекте со ссылкой на его исходный родительский объект. В приведенном ниже коде показано, чего я пытаюсь достичь. Я перемещаю данные в экземпляры родителя и ребенка из объектов данных. Отображение отлично работает для создания коллекции List с правильными данными, но мне нужно, чтобы ForEach назначил ссылку на родительский экземпляр.

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; }
}
4b9b3361

Ответ 1

Использовать AfterMap. Что-то вроде этого:

Mapper.CreateMap<ParentData, Parent>()
    .AfterMap((s,d) => {
        foreach(var c in d.Children)
            c.Parent = d;
        });