Я пытаюсь выполнить автоматический переход от моего OrderResource к моему Order.Мой OrderResource
public class OrderResource
{
public string OrderId { get; set; }
public UserResource User { get; set; }
public double TotalOrder { get; set; }
public IEnumerable<OrderItemResource> OrderItems { get; set; }
public OrderResource()
{
OrderItems = new List<OrderItemResource>();
}
}
OrderItemResource:
public class OrderItemResource
{
public string ProductName { get; set; }
public double Price { get; set; }
public int Quantity { get; set; }
public OrderResource Order { get; set; }
public string OrderId { get; set; }
}
Моя модель заказа.Это то, что я хочу сопоставить своему OrderResource, включая элементы:
[Table("Orders")]
public class Order
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Mail { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public double Cost { get; set; }
public IEnumerable<OrderItem> Items { get; set; }
public Order()
{
Items = new List<OrderItem>();
}
}
и мою модель OrderItem:
[Table("OrderItems")]
public class OrderItem
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public int Quantity { get; set; }
[ForeignKey("OrderId")]
public Order Order { get; set; }
public int OrderId { get; set; }
}
У меня нет проблем с отображением пользователя и тому подобное.Все они работают, но я не могу понять, как отобразить элементы OrderItems.Это последняя строка, которая меня подводит:
CreateMap<OrderResource, Services.Order.Models.Order>()
.ForMember(o => o.Id, opt => opt.Ignore())
.ForMember(o => o.Mail, opt => opt.MapFrom(or => or.OrderId))
.ForMember(o => o.FirstName, opt => opt.MapFrom(or => or.User.firstName))
.ForMember(o => o.LastName, opt => opt.MapFrom(or => or.User.lastName))
.ForMember(o => o.Address, opt => opt.MapFrom(or => or.User.adress))
.ForMember(o => o.Items, opt => opt.MapFrom(or => or.OrderItems));
, и здесь появляется точная ошибка:
Services.Order.Models.Order realOrder = Mapper.Map<OrderResource, Services.Order.Models.Order>(Order);
Ошибка AutoMapperMappingException: отсутствует конфигурация карты типов или не поддерживается отображение.
ОБНОВЛЕНИЕ:
Я сейчас добавил:
CreateMap<OrderItemResource, OrderItem>()
.ForMember(oir => oir.Name, opt => opt.MapFrom(oi => oi.ProductName))
.ForMember(oir => oir.Price, opt => opt.MapFrom(oi => oi.Price))
.ForMember(oir => oir.Quantity, opt => opt.MapFrom(oi => oi.Quantity));
Как бы я это назвал?У меня есть это в моем контроллере:
Services.Order.Models.Order realOrder = Mapper.Map<OrderResource, Services.Order.Models.Order>(Order);
, но он все еще не принимает массив orderitem, когда он выполняется автоматически.