2009-11-19 2 views
3

나는 당황 스럽다.모델 → ViewModel 임피던스 부정합을 극복하는 방법?

나는 데이터베이스 테이블 흥미로운

(Id, CustomerId, RegionId,...N), 

아무것도, 모든 외래 키의 거울 내 LINQ - 투 - SQL 모델을 가지고있다. 이제 asp.net보기에서이 데이터를 볼 필요가있다. 나는 뷰 모델이

(Id, CustomerId, Customer, RegionId, Region, CustomersSelectList, RegionsSelectList). 

는 분명히, 뷰 모델은 LINQ - 투 - SQL 모델의 상위 집합입니다 만듭니다.

어떻게 변환하나요? 나는 automapper를 사용하고 있지만 누락 된 데이터를 얻는 좋은 패턴을 찾는 방법에 대해 의아해했다.

나는 가능한 솔루션을 참조하십시오

  1. 가 L2S 모델 + 합류 값하고 가입하고 투영하여이 클래스를 채울 것 3 클래스를 만듭니다. 그런 다음이 클래스를 내 viewmodel에 자동 매핑하십시오.

  2. 투영을 통해 익명의 클래스를 반환하고 automapper (매우 깨끗하지는 않음)를 통해 viewmodels에 매핑합니다.

  3. 쿼리를위한 db 뷰를 생성합니다 (뷰는 모두 조인 된 필수 테이블입니다). 이전에 내가 (단순 프로젝트) 직접보기에 내 L2S 클래스를 사용하고 있기 때문에

, 그 저를 도와주세요, 지금은 더 복잡 전망이 복잡성을 해결하기 위해 뭔가를 할 필요가있다.

누구의 책임은이 변환을 수행하는 것입니까? 어떻게해야합니까?

감사합니다.

업데이트 : 조금만 설명해주세요. 내 비즈니스 엔티티의 완전한 평면 표현을 얻을 수 있어야합니다. DB에서 여러 테이블에 저장됩니다. L2S에서는 많은 클래스 (미러 db 테이블)입니다. ViewModel에서는 많은 db 테이블에서 '누적'되어야합니다.

linq을 통해 SQL 결합을 수행하고 ViewModel을 직접 작성해야합니까?

모든 필드가있는 비즈니스 엔티티 (linq가 아닌)를 만들고 linq을 SQL에 채우고 ViewModel로 자동 매핑해야합니까?

L2S 클래스를 비즈니스 엔터티로 사용을 중단해야할까요? 처음부터 새로운 비즈니스 엔터티 클래스를 만들고 대신 L2S를 멍청한 ORM으로 처리할까요?

답변

1

필자는 automapper가이 기능이 실제로 작동하는지 알기에는 익숙하지 않지만 두 단계로 수행 할 수 있다고 생각합니다. 먼저, automapper가 서로의 미러 인 모든 등록 정보를 맵핑하도록하십시오. 그런 다음, 올바른 값을 얻거나 맵핑을 시작한 오브젝트에서 오브젝트를 설정할 수있는 다른 특성 안에 논리를 갖게하십시오.

관련 문제