Estoy tratando de encontrar una forma de configurar AutoMapper para establecer una propiedad en un objeto de destino con una referencia de su objeto principal fuente. El siguiente código muestra lo que estoy tratando de lograr. Estoy moviendo datos a Parent & Instancias secundarias de los objetos de datos. La asignación funciona bien para crear la colección de Lista con datos correctos, pero necesito tener un ForEach para asignar la referencia de instancia padre.Cómo asignar referencia padre a una propiedad en un niño con AutoMapper
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; }
}
Yo tenía la esperanza de evitar el uso de un bucle completo, pero su respuesta parece ser la única alternativa. Algo así como: .ForMember (dest => dest.Parent, opt => opt.MapFrom (src => src)) era lo que estaba buscando pero no funciona. ¡Gracias! –
Gracias Patrick, tu solución ayudó mucho :) – Davita
Esperaba algo diferente también. Esto se pone bastante feo si tienes> 1 lista de niños que necesitas procesar. –