이 기본 유지 나는 두 가지 모델이 있습니다. 고객 및 CustomerViewModel. 하나의 속성과 다른 속성을 매핑하려고합니다.지도보기 IEnumerable 모델
public class Customer
{
public string CompanyName { get; set; }
public int CustomerType { get; set; }
public IEnumerable<ContactViewModel> CustomerContacts { get; set; }
}
public class CustomerViewModel
{
public string CompanyName { get; set; }
public int CustomerType { get; set; }
public ContactName {get;set;}
public ContactTel {get;set;}
}
문제는 contactName 및 contactTel에 customerContact를 매핑하려고합니다. IEnumerable이며 연락처 목록을 포함하고 있지만이 필터 중에 연락처보기 모델의 IEnumerable에는 1 개의 레코드 만 포함됩니다.
automapper에서 어떻게 이러한 유형의 매핑을 수행합니까?
UPDATE :
은 앞서 언급 비슷한 approuch 사람과 함께 가기로 결정했다. 나는 automapper에서 이것을 할 수 있기를 바랬지 만 약간 더 복잡하다고 생각합니다.
public static CustomerListViewModel MapToListView(this CustomerServiceModel svcModel)
{
ContactServiceModel contact = new ContactServiceModel { Name = String.Empty, Telephone = String.Empty };
if(svcModel.CustomerContacts != null) contact = svcModel.CustomerContacts.FirstOrDefault();
return new CustomerListViewModel
{
Id = svcModel.Id,
address = svcModel.Address.MapToView(),
CompanyName = svcModel.CompanyName,
ContactName = contact.Name,
ContactTelephone = contact.Telephone
};
}
당신이 원하는 :
은 아마도 안전한 옵션은
Customer
클래스 자체의 내부 논리를 넣어하는 것입니다 필터를 사용하거나 매핑 전에 하나의 레코드 만 가지고 있다는 것을 알고 있습니까? – Maess하나의 레코드 만 보유 할 것입니다. –
@JamesAndrewSmith, Linq가 가야 할 것 같습니다. 자동 어머 사용은 필수입니까? – Yohannes