映射属性是集合类型

时间:2017-05-12 18:31:40

标签: c# automapper automapper-6

假设我在业务层中有这样的类:

Namespace Business
{
public class Order
    {
        public int ID { get; set; }
        public List <OrderItem> OrderItems { get; set; }
    }

public class OrderItem
    {
        public int ID { get; set; }
        public int ProductID { get; set; }
    }
}

and classes like this in a Model layer:

Namespace Model
{
public class OrderModel
    {
        public int ID { get; set; }
        public List <OrderItem> OrderItems { get; set; }
    }

public class OrderItemModel
    {
        public int ID { get; set; }
        public int ProductID { get; set; }
    }
}

如何将业务层中的订单类映射到Model层中的Order类?我试过这个:

Mapper.Initialize(cfg => 
                {
                    cfg.CreateMap<Order, OrderModel>();
                    cfg.CreateMap<OrderModel, Order>();
                });

由于Order类中的OrderItem属性,它不起作用。如果我删除OrderItem属性,那么它的工作原理。如何在映射中包含orderitem属性。

我使用的是Automapper 6.02版。

1 个答案:

答案 0 :(得分:1)

由于名称匹配,因此没有理由不自动映射集合。到目前为止,我看到,您错过了OrderItemOrderItemModel

之间的映射
Mapper.Initialize(cfg => 
            {
                cfg.CreateMap<OrderItem, OrderItemModel>();
                cfg.CreateMap<OrderItemModel, OrderItem>();
                cfg.CreateMap<Order, OrderModel>();
                cfg.CreateMap<OrderModel, Order>();                                 
            });