2011-03-16 7 views
4

코드로 데이터베이스를 빌드 할 때 EF 4.1 RC 및 CodeFirst/POCO를 사용하고 있습니다.EF4.1 CodeFirst : 조인 테이블에 필드 추가

Teachers-Students (한 명의 교사는 많은 학생을 가질 수 있고 한 명의 학생은 많은 교사를 가질 수 있음)와 같이 다 대다 관계를 갖고 있다고 상상해보십시오. 따라서 저는 두 명의 POCO가 있습니다 : (1) 교사와 (2) 학생.

EF가 해당 테이블을 생성하면 (1) 교사, (2) 학생 및 (3) 추가 조인 테이블의 세 테이블로 끝납니다. 조인 테이블에는 Teacher_ID와 Student_ID의 두 필드가 있습니다.

내가 조인 테이블에 추가 필드를 추가 할 기회가 있는지 궁금합니다. "Grade"(특정 교사가 특정 교사에게주는 점수)?

현재 두 개의 POCO만으로이 작업을 수행하는 방법을 알지 못합니다.

내가 할 수있는 일은 수동으로 세 번째 POCO (조인 테이블 용)를 수동으로 만드는 것입니다. 맞습니까? 그것은 확실히 작동 할 것이지만, 그때 나는 하나의 교사처럼 멋진 탐색 속성을 잃어 가고 있습니다. 학생. 첫 번째(), 등등. 그것은 내가 다른 길을 찾고있는 주된 이유입니다.

답변

5

맞습니다. 그리고 코드 우선에만 적용되는 것은 아닙니다. 조인 테이블에 추가 필드가있는 경우 필드로 매핑됩니다. 그리고 그 반대의 경우, 조인 테이블에 추가 필드가 필요하면 TeacherStudent 엔터티에 대해 새 엔터티를 만들고 0 대 1 또는 많지 또는 1 대 다수 탐색 속성이 있어야합니다. 어쨌든 Teacher.StudentsStudent.Teachers에 액세스 할 수있는 편안함을 잃어 버리고 중간 엔터티를 거쳐야합니다.

또는 DB 구조를 다르게 모델링하고 Teacher 또는 Student 또는 네 번째 엔티티에 추가 정보를 추출하는 방법을 생각해 볼 수 있습니다. 그러나 그것은 전적으로 귀하의 시나리오에 달려 있습니다.

+0

좋습니다. 그것이 내가 생각한 것입니다. 그냥 내가 어떤 종류의 숨겨진 기능을 놓치지 않았는지 확인하고 싶었습니다 ;-) – Ingmar

1

예, 조인 테이블에 페이로드가 없거나 1 대 1로 여러 연결로 분할해야합니다. 이로 인해 추가 특성뿐만 아니라 PK도 보유 할 세 번째 엔티티가 작성됩니다.

0

이것은 아직 시도하지 못한 아이디어입니다. 어쩌면 학생과 교사 수업을 그대로 유지하고 속성이 Student, TeacherGrade 인 세 번째 POCO StudentGrade을 추가 할 수 있습니다. 그런 다음 유창한 API를 사용하여 StudentTeacherStudentGrade 클래스 간의 다 대다 관계가 동일한 테이블에 매핑되는지 확인해야합니다.

희망 하시겠습니까?