Как мне автоматизировать список объектов к тому же списку объектов в сети asp? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь выполнить автоматический переход от моего 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, когда он выполняется автоматически.

...