이것은 일반적인 질문이나 특정 ORM이나 언어와 관련이 없습니다.이 질문은 ORM 환경 설정에 관계없이 나타납니다.ORM과 다 대다 관계
다 대다 관계를 매핑 할 때 중개 테이블을 모호하게 만들거나 중개 테이블을 모델의 일부로 만들 수 있습니다. 중개 테이블에 관계가 넘치는 중요한 데이터가있는 경우 어떻게 매핑을 처리합니까?
CaseWorker.Cases
한편으로
CaseWorker.CaseWorkerCases.Cases
보다, 테이블을 : 정말 대신 할 수있을 것이다 프로그래머로
CaseWorker (id, first_name, last_name)
CaseWorkerCases (case_worker_id, case_id, date_opened, date_closed)
Case (id, client_id, field_a, field_b)
:
은 다음 표를 고려 CaseWorkerCases는 유용한 데이터를 포함하고 있으며 중개 테이블을 숨기면 해당 데이터에 액세스 할 수 없게됩니다. nt. 반면에 중개 테이블을 탐색해야하는 경우 Cases에 액세스하는 일반적인 작업이 어색해 보입니다.
하나의 해결책은 모델에서 중간 테이블을 노출 한 다음 작동 할 수있는 래퍼 속성을 제공하는 CaseWork 객체를 제공하는 것입니다. 예 :
public IEnumerable<Case> Cases
{
get{return (from caseWorkerCase in this.CaseWorkerCases
select caseWorkerCase.Case);}
}
하지만 잘못된 것 같습니다.
나는 DDD를 사용하고 있습니다 :
나는이 정확한 주제에 대한 블로그 게시물이 있습니다. 이것의 대부분은 서비스 레이어 뒤에 숨겨져 있습니다. 중개 테이블이 숨겨진 프로젝트에서 일했습니다. 이로 인해 Linq가 중개 테이블의 데이터를 필요로하고 데이터를 발표자/뷰 (예 : 모든 열린 사례, 사례 작업자 및 사례가 열렸던 날짜를 보여주는 GridView)로 가져와야 할 때 문제가 발생했습니다. 이 프로젝트에서 2 단계 접근 방식을 사용하고 있지만 제작하는 "추악한"코드의 팬이 아닙니다. – mlindegarde