2009-11-10 5 views
3

나는 3 개의 데이터 테이블과 이들을 매핑하는 네 번째 테이블, 즉 세 개의 모든 열이 기본 키인 3 개의 ID를 가지고 있습니다.엔티티 프레임 워크에서 3 way many to many

실제로 A는 List를 포함하고 B는 List를 포함하는 객체입니다. A에서 B와 C의 2 차원 어레이로 정착 할 것입니다.

이 방법이 있습니까? 나는이 모든 잘못을 저지르고 있는가?

답변

1

조인 테이블에 복합 키 (두 개의 기본 키 필드) 만있는 일반적인 다 대다 (many-to-many) 경우 Entity Framework는 탐색 속성을 관련 엔터티에 직접 추가합니다. 그러나 조인 테이블에 추가 필드가 있으면 Entity Framework에서 조인 테이블의 엔터티를 만들어 추가 정보를 "얻을"수 있습니다.

위에서 설명한 경우 Entity Framework는 개체 3 개에 대한 연결을 포함하는 "조인"테이블에 대한 엔터티를 생성합니다.

엔티티 Item1, Item2, Item3 및 Link를 사용하여 예제를 만들었습니다. 이것은 나에게 연관되는 항목 2, 항목 3 "쌍"의 목록을 제공합니다

select Item1ID, Item2ID, Item3ID from Link where Item1ID = 1 

: 내가 항목 1의 ID가있는 경우

데이터베이스 관점에서

, 내가 좋아하는 뭔가 테이블을 조회 할 수 있습니다 Item1 # 1.

var q = 
    from link in context.Link 
    where link.Item1ID == 1 
    select new { link.Item1, link.Item2, link.Item3 }; 

또는 이미 I가 관계를 얻을하려는 항목 1 개체가있는 경우 : 엔티티에 Linq에 사용, 내가 수행하여 유사 EF 모델을 조회 할 수 있습니다

item1.Link.Select(l => new { l.Item1, l.Item2, l.Item3 }); 

이는 기본적인 예입니다 그러나 LINQ 확장 메서드와 IQueryable을 사용하여 원하는대로 데이터를 변형/그룹화 할 수 있습니다.

사례에 대한 자세한 내용을 제공 할 수 있다면 더 구체적인 예를 들려 줄 수 있습니다. 희망이 도움이됩니다!

0

질문을 올바르게 이해했다면 3 가지 유형의 엔티티 간의 관계에 대해 이야기하고있는 것입니다. 이 엔티티가 Book, Author 및 Publisher라고 가정 해 봅시다. 이 경우 관계에서

예약 < 있습니다 - 대다 -> 저자 < - 대다 -> 발행인 < - 예약

당신이 이러한 관계를 매핑 할 수 있습니다 방법 도메인 모델은 응용 프로그램에서 객체 그래프를 탐색하는 방법에 따라 다릅니다.

를 들어 거기에 3 개 단체 3 옵션 :

가) 도서 출판사 b)는 개체 저자가 책과 출판사 목록의 목록이 포함의 저자 목록과 목록이 포함 된 개체가) 개체 출판사는 책의 목록이 포함되어 있습니다 및 저자 목록

일부 관계는 디자인의 관점에서 중복 될 수 있습니다. 예를 들어, b)의 경우 Author 객체의 Books 목록과 Book 객체의 Publisher 목록을 유지하기에 충분합니다.단어에서

저자 [책] -> 도서 [발행인] -> 또한 제작사

다른 경우 가능

제작사 [책] -> 도서 [저자] -> 저자 게시자 [작성자] -> 저자 [도서] -> 도서

희망이 도움이됩니다.