다음 클래스가 있습니다. 도메인 모델은 엔터티 프레임 워크에 의해 만들어지며 POCO를 사용하고 있습니다.AutoMapper 복합 개체 매핑 - 목록 매핑
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreatedDate{ get; set; }
public DateTime ModifiedDate{ get; set; }
public virtual ICollection<Order> Orders{ get; set; }
}
public class CustomerDTO
{
public int Id { get; set; }
public string Name{ get; set; }
public List<OrderDTO> Orders{ get; set; }
}
public class Order
{
public int Id { get; set; }
public string Name { get; set; }
public int ProductId { get; set; }
public DateTime CreatedDate{ get; set; }
public DateTime ModifiedDate{ get; set; }
}
public class OrderDTO
{
public int Id { get; set; }
public string Name{ get; set; }
}
나는 다음과 같은 매핑을 시도했습니다.
Mapper.CreateMap<Customer, CustomerDTO>();
Mapper.CreateMap<CustomerDTO, Customer>();
Mapper.CreateMap<Order, OrderDTO>();
Mapper.CreateMap<OrderDTO, Order>();
가 나는 또한 내가 DB에서 검색하고 customerDTO
Customer customer = _customerRepository.GetById(customerDTO.Id);
Mapper.Map<CustomerDTO, Customer>(customerDTO, customer);
고객 객체로 업데이트 고객을 업데이트하려면
Mapper.CreateMap<CustomerDTO, Customer>().ForMember(c => c.Orders,
m => m.MapFrom
(
q => Mapper.Map<List<OrderDTO>, ICollection<Order>>(q.Orders)
)
);
을 시도 올바르게 업데이트되며, 생성 및 수정 된 날짜는 변경되지 않습니다. 그러나 주문 목록에있는 각 주문은 올바르게 업데이트되지 않습니다. productId, created 및 modified 날짜가 기본값으로 설정되고 데이터베이스에서 검색된 값은 설정되지 않습니다.
주문이 가상 컬렉션이기 때문에 다른 작업을해야합니까?
나는 자동 매퍼에 새로운 도움을 주셨다. 매핑되지 않은 회원들이 발견되었다 :
편집
나는 응용 프로그램 시작시 다음과 같은 오류를 수신
Mapper.AssertConfigurationIsValid();
을 추가했다. 아래 유형 및 회원을 검토하십시오. 사용자 지정 해결을 추가, 무시, 커스텀 매핑 식을 추가하거나
내가 내 매핑을 업데이트 소스/대상 유형 수정 :
Mapper.CreateMap<OrderDTO, Order>()
.ForMember(x => x.CreatedDate, y => y.Ignore())
.ForMember(x => x.ModifiedDate, y => y.Ignore())
.ForMember(x => x.ProductId, y => y.Ignore())
을하지만 주문은 여전히 위의 속성을 덮어 데 기본 골짜기
같은 문제!"Map"= Property 'Id'및 'UpdateDate'가 "CreateMap"이 정의 된대로 무시하는 대신 기본값으로 설정됩니다. 해결책을 찾았습니까 ?? – dataCore