뷰 모델을 사용하여 ASP.NET MVC 프로젝트에서 액션 메소드를 정리하려고합니다. 현재 내보기 모델에는 다른 항목과 관계가있는 항목이 포함되어 있습니다. 예를 들어, ContactViewModel 클래스에는 Address가있을 수있는 Contact가있을 수 있습니다. 둘 다 별도의 엔티티입니다. 연락처 개체 목록을 쿼리하려면 다음과 같은 작업을 수행 할 수 있습니다.ASP. NET MVC : 엔티티를 모델보기로 매핑
IList<Contact> contacts;
using (IContactRepository repository = new ContactRepository())
{
contacts = repository.Fetch().ToList();
}
EditContactViewModel vm = new EditContactViewModel(contacts);
return View(vm);
이 방법은 몇 가지 문제를 유발합니다. 예를 들어 저장소는 using 문에서 쿼리됩니다. 뷰가 렌더링 될 때까지 컨텍스트가 범위를 벗어 났으므로 뷰가 컨택과 연관된 Address를 쿼리 할 수 없게됩니다. 열정적 인로드를 가능하게 할 수는 있지만 오히려하지 않을 것입니다. 또한, 엔티티 모델이 내 의견에 피를 흘리게 된 것을 좋아하지 않습니다 (연락처와 주소 간의 관계에 대한 지식이 있지만 내 생각에 동의하지 않는 것이 좋다고 생각합니다).
연락처 및 주소 엔터티의 속성이 포함 된 fattened 클래스를 만드는 것이 좋습니다. 그런 다음 연락처 및 주소 엔티티를 새롭고 평평한 객체로 투영 할 수 있습니다. 이 접근법에 대한 나의 관심사 중 하나는 내 작업 방법이 약간 바쁠 수 있고 내가하지 않는다는 것입니다. AutoMapper는 두 개 이상의 개체를 단일 유형으로 매핑 할 수 있다고 생각합니다.
내 관심사를 극복하기 위해 어떤 기술이 선호됩니까?
매우 좋습니다. 나는 AutoMapper에 아직 익숙하지 않아서지도를 만들 수 있다는 것을 인식하지 못했습니다. 고맙습니다. – senfo