【发布时间】:2013-05-09 00:53:19
【问题描述】:
我有两个班级:
public class CustomerDTO
{
public string Name {get;set;}
public List<Order> Orders {get;set;}
}
public class OrderDTO
{
public string Name {get;set;}
public string Description {get;set;}
public decimal Cost{get;set;}
}
我正在使用 AutoMapper for .NET 3.5,目前在我的 Application_StartUp 中执行以下操作:
Mapper.CreateMap<Customer, CustomerDTO>();
Mapper.CreateMap<Order,OrderDTO>();
这是一个简化的示例,因为我将 DTO 属性命名为与实体属性不同,因此我使用了 ForMember,但我不清楚如何将订单映射到客户:
我试过了:
Mapper.CreateMap<Customer, CustomerDTO()
.ForMember(dest => dest.Orders, opt=> opt.MapFrom(src=>src.Orders));
但它没有找到src.Orders。
如果我确实需要两个 CreateMap 语句,AutoMapper 是否“自动”将对象 Customer 链接到 Orders?
【问题讨论】:
-
在您发布的代码中,CustomerDTO 具有
orders而不是Orders属性。这只是帖子中的错字吗?如果它是发布的,那将是一个问题,属性名称区分大小写。 -
另外,如果您的地图是 1 比 1,那么您可以这样做
Mapper.Map(cust, custDTO) -
代码不应该也是
ListMOrdersDTO> Orders {get;set};?? -
您能发布您的
Ordem和Custumer课程吗?可能 Orders 属性的类型不一样。 -
@JustinPihony - 这对我来说是令人困惑的部分。我了解将 cust 映射到 CustDTO,但是如何将 OrdersDTO 映射到 CustDTO?
标签: c# .net-3.5 automapper