正确的方法来映射复杂页面的DTO

时间:2011-03-10 22:19:09

标签: model-view-controller automapper dto

我有一个MVC应用程序,我已经开始专门使用DTO将数据发送到视图。我正在使用AutoMapper来简化此过程。

想象一下,我的客户有很多订单。为了显示一个简单的客户概述页面,我可以使用AutoMapper和一个简单的DTO类来映射客户名称,地址等。为了映射订单,我可以AutoMapper一个列表<> Customer.Orders的更简单的列表< CustomerOrderDTO>。

我现在被困在同一视图中我想要两者的页面上。也许是一个简单的标题,其中包含客户姓名和电话号码,然后是订单列表。在某些情况下,部分是完美的解决方案,但不是全部。

所以我的问题是如何看待这样的页面的DTO,以及应该如何映射(最好使用AutoMapper)。到目前为止,在我的研究中,我看不出AutoMapper如何映射这样的嵌入式枚举。

1 个答案:

答案 0 :(得分:0)

创建映射时,忽略集合/枚举,只将简单对象映射到简单对象,例如CreateMap<Order, CustomerOrderDTO>()

执行映射时,您可以使用集合,AutoMapper只会做正确的事情,例如Map<IEnumerable<Order>, IEnumerable<CustomerOrderDTO>>()

如果你正在映射一个包含集合的对象,例如CustomerCustomerDTO,其中每个对象都有它的订单集合,只要你已完成CreateMap客户对象和CreateMap对象的Order,可枚举只会自动映射,除非您在客户映射中专门设置它。