How to map a parent/child-collection Modell mit Automapper?
Schrieb ich eine einfache parent-child-Szenario und nicht in der Lage, um es zugeordnet mit Automapper. In dem folgenden Szenario, ich nehme an, dass die Liste der OrderItems zugeordnet werden Liste der dtoOrderItems aber seiner geschieht nicht automatisch.
Brauche ich zu schreiben, ihn manuell mit der for-Schleife oder so?
public class Order
{
public int OrderNumber {get; set;}
public List<OrderItem> OrderItems { get; set; }
public Order()
{
OrderItems = new List<OrderItem>();
OrderItems.Add(new OrderItem() {Quantity= 10});
}
}
public class OrderItem
{
public int Quantity {get; set;}
}
public class DTOOrder
{
public int DTOOrderNumber { get; set; }
public List<DTOOrderItem> DTOOrderItems { get; set; }
public DTOOrder()
{
DTOOrderItems = new List<DTOOrderItem>();
}
}
public class DTOOrderItem
{
public int DTOQuantity { get; set; }
}
public DTOOrder TestConversion ()
{
AutoMapper.Mapper.CreateMap<OrderItem, DTOOrderItem>();
AutoMapper.Mapper.CreateMap<Order, DTOOrder>();
Order order = new Order();
var dtoOrder = AutoMapper.Mapper.Map<Order, DTOOrder>(order);
return dtoOrder;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Grund, warum Sie nicht bekommen, Sammlungen zugeordnet ist: ein name der Kollektion ist OrderItems und ein anderer ist DTOOrderItems. Automapper Karten Eigenschaften von Namen (Kleinschreibung) und nicht beheben können.
Um dieses Problem zu lösen:
1) Benennen Sie DTOOrderItems (in Ihrem DTO-Klasse) zu OrderItems
oder
2) Override-Zuordnung für diese Eigenschaft mit ForMember Methode von Automapper-API. So etwas wie dieses:
Das gleiche Problem haben Sie mit der Menge und Bestellnummer Eigenschaften.
Schreiben Sie diese in Ihrer Erweiterung Methode ,Anstatt einer Schleife auf jeder Seite bleibt es in einer einzigen Seite, und Sie können es wiederverwenden, ohne doppelten code .