1

Entity Framework가있는 Asp.Net MVC에서 별도의 어셈블리에있는 DAL (데이터 액세스 계층)의 리포지토리가 보기 모델.보기 모델을 작성하고 데이터베이스 상호 작용을 최소화하는 방법

DAL에서 엔티티, 주로 IQueryAbles를 가져옵니다. 그것들에서 꽤 복잡한 뷰 모델을 구성합니다. 보기 모델을 작성하기 위해 생성 된 SQL 선택 수를 최소화하고 싶습니다. 경우에 따라 db를 10-20 회 쿼리해야합니다.

예를 들어,이 그래서이 성능 관점에서 최적이 아닌 내보기 모델

class ViewModel{ 
    //.. public properties mapped from entities 1 sql select 
    public int CountOfSomething {get; set;} 1 sql select 
    public int CountOfSomethingElse {get;set;} 1 sql select 
    //..and so on 
} 

입니다. 훨씬 복잡한 결과를 반환하도록 저장소를 수정할 수는 있지만 엔티티는 반환하지 않지만 다른 것은 반환 할 수 있습니다.

이 경우 DAL은 DAL 어셈블리에 정의 된 중간 모델 (엔티티 (들) 및 추가 데이터)을 작성하여 반환하며 그 엔티티가 아닌 중간 모델은 뷰 모델로 변환됩니다.

DB -> 엔티티 ->중급 모델 -> 뷰 모델

이 추가 "매핑"더 많은 코드 == 더 복잡성을 필요로한다. 나는이 문제를 지금 어떻게 다루어야할지 확신하지 못한다.

지금까지 추가 "도우미"저장소 메소드를 작성하여 일부 사례를 해결했지만 지금은 매우 빠르게 엉망이되는 것을 알고 있습니다.

아이디어가 있으십니까?

답변

0

작업이 엔터티/중간 모델에서 뷰 모델로만 매핑되는 일부 클래스를 만듭니다.

그 목적을 위해 몇 가지 라이브러리가 있습니다. automapper을 추천합니다. 매핑 기능을 제대로 수행 할 수 있도록 몇 가지 테스트 기능도 있습니다.

관련 문제