[英]Automapper IEnumerable within class is not being mapped to RepeatedField
[英]Automapper IEnumerable<T> of class is not mapped
我使用 ASP.NET Core 2.2 和 Automapper 9.0.0。
我有以下Order
model class:
public partial class Order
{
public Order()
{
OrderItems = new HashSet<OrderItem>();
}
public int Id { get; set; }
public DateTime DatePlaced { get; set; }
public virtual ICollection<OrderItem> OrderItems { get; set; }
}
並OrderDto
class:
public class OrderDto
{
public int Id { get; set; }
public DateTime DatePlaced { get; set; }
public IEnumerable<OrderItemsDto> Items { get; set; }
}
我已將以下配置寫入 map 從dto到model class:
CreateMap<OrderItemsDto, OrderItem>()
.ForPath(dest => dest.Quantity, opt => opt.MapFrom(src => src.Quantity))
.ForPath(dest => dest.TotalPrice, opt => opt.MapFrom(src => src.TotalPrice));
CreateMap<OrderDto, Order>()
.ForPath(dest => dest.DatePlaced, opt => opt.MapFrom(src => src.DatePlaced))
.ForPath(dest => dest.OrderItems, opt => opt.MapFrom(src => src.Items));
// .ForMember(dest => dest.OrderItems, opt => opt.MapFrom(src => src.Items));
這是從model到dto class 的配置:
CreateMap<OrderItem, OrderItemsDto>()
.ForPath(dest => dest.Product.Name, opt => opt.MapFrom(src => src.Product.Name))
.ForPath(dest => dest.Product.Price, opt => opt.MapFrom(src => src.Product.Price))
.ForPath(dest => dest.Product.Category.Name, opt =>
opt.MapFrom(src => src.Product.Category.Name))
.ForPath(dest => dest.Quantity, opt => opt.MapFrom(src => src.Quantity))
.ForPath(dest => dest.TotalPrice, opt => opt.MapFrom(src => src.TotalPrice));
CreateMap<Order, OrderDto>()
.ForPath(dest => dest.DatePlaced, opt => opt.MapFrom(src => src.DatePlaced))
.ForMember(dest => dest.Items, opt => opt.MapFrom(src => src.OrderItems));
但是, Items
始終為空,但DatePlaced
已映射。
我得到以下結果:
[
{
"id": 1,
"datePlaced": "2020-02-09T21:48:13.347",
"items": []
}
]
返回數據的方法:
return _mapper.Map<IEnumerable<OrderDto>>(await _orderRepository.GetAll());
我如何才能正確映射Items
?
這是因為您缺少 OrderItemsDto 和 OrderItem 之間的映射。 因此,Automapper 不知道如何 map 集合的項目。
添加映射OrderItemsDto -> OrderItem
和OrderItem-> OrderItemsDto
應該解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.