0
我有一個.Net Core 2 webapi,其中我使用automapper映射到Dtos。一切工作正常,除了我看到一個意外的行爲時,我將一個對象映射到Dto,並且Dto還包含集合的映射。 E.gAutomapper投影導致嵌套Dto的空集合
CreateMap<Order, OrderDto>();
CreateMap<Product, ProductDto>();
班在哪裏都是這樣
public partial class Order
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products{ get; set; }
public int ProductCount {return Products.Count;}
}
public partial class Product
{
public int Id { get; set; }
public int OrderId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
下按預期工作;
類的映射,以及ProjectCount是正確的DTO
public partial class OrderDto
{
public int Id { get; set; }
public virtual ICollection<Product> Products{ get; set; }
public int ProductCount{ get; set; }
}
_context.Orders.Include<>(Products).ProjectTo<>(OrderDto)
但這樣做以下,productcount始終爲零。
E.g.如果我這樣做;
public partial class OrderDto
{
public int Id { get; set; }
public virtual ICollection<ProductDto> Products{ get; set; }
public int ProductCount{ get; set; }
}
public partial class ProductDto
{
public int Id { get; set; }
public int OrderId { get; set; }
public string Name { get; set; }
}
_context.Orders.Include<>(Products).ProjectTo<>(OrderDto)
爲什麼會發生這種情況,我該如何確保它不會發生?這是一個真實世界的例子,我需要一個引用集合的屬性 - 我在基礎和Dto中都需要它。我可以做哪些工作以下罰款,但它不出現,這應該是它是如何工作...
public partial class OrderDto
{
public int Id { get; set; }
public virtual ICollection<ProductDto> Products{ get; set; }
public int ProductCount {return Products.Count;}
}
public partial class ProductDto
{
public int Id { get; set; }
public string Name { get; set; }
}
_context.Orders.Include<>(Products).ProjectTo<>(OrderDto)