Mám nadřazené třídy: Položky.
A související, dítě, třída: Pozice.
Nechci, aby zahrnoval Položky jako dítě z Pozice třídy.
Ale když jsem použití automapper, Položka je vždy zahrnuta jako dítě Polohy.
Třídy:
// Item
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Position> Positions { get; set;}
// Position
public int Id { get; set; }
public int ItemId { get; set; }
public int CoordinateX { get; set; }
public int CoordinateY { get; set; }
public Item Item { get; set; }
// Item DTO
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Position> Positions { get; set; }
// Mapping profile
CreateMap<Item, ItemDTO>();
Jsem se dostat Položky, jako:
Item item = dbContext.Items.AsNoTracking().Include(p => p.Positions);
To správně vrátí výsledek. To je to, co očekávám. Něco jako:
{
Id: 1
Name: "ABC",
Positions:
[
{
Id: 1,
ItemId: 1,
CoordinateX: 10,
CoordinateY: 15,
Item: []
},
{
Id: 2,
ItemId: 1,
CoordinateX: 13,
CoordinateY: 18,
Item: []
}
]
}
Všimněte si, že Položky objektu v děti záznamy je prázdný.
Nicméně, když jsem použití automapper, Položka je vždy zahrnuta jako dítě Polohy.
var result = mapper.Map<ItemDTO>(item);
To vytváří následující výsledek:
{
Id: 1
Name: "ABC",
Positions:
[
{
Id: 1,
ItemId: 1,
CoordinateX: 10,
CoordinateY: 15,
Item:
[
Id: 1,
Name: "ABC",
Positions: []
]
},
{
Id: 2,
ItemId: 1,
CoordinateX: 13,
CoordinateY: 18,
Item:
[
Id: 1,
Name: "ABC",
Positions: []
]
}
]
}
Jak mohu použít automapper a stále dosáhnout očekávaného výsledku?
Já používám .NET 5 a automapper 8.1.1
Jsem se snažil pomocí .Ignore v mapování profilu, ale výsledek byl stejný.