2011-05-02 3 views
0

linq to entity 매핑 문제가 있습니다. 나는 세 개의 테이블을 가지고있다.Linq 매핑 문제가 1에서 0.1 사이의 관계

표 1 - ItemsB (ID 내장까지 PART_NUMBER()가 널이 될 것이다) (키 정보 나 기타 항목)
표 2 - 다른 ItemsA) (ID (키 PART_NUMBER (내장까지 널이 될 것이다), 항목 A 정보)
표 3 - WebItems (Item_id, 웹 항목 정보) *이 항목이 작성되고이 표에 푸시 된 후 ItemsB 및 ItemsA의 항목으로 구성됩니다.

ItemsA/ItemsB는 WebItem과 1 - 0.1의 관계를 갖습니다. Part_Number는 Item_id에 매핑됩니다.

EF4.0을 사용하고 있습니다.

문제는 위와 같이 연결/매핑을 설정 한 후 다음과 같은 오류 메시지가 표시됩니다. "선 조각을 매핑 할 때 문제가 발생했습니다 : 두 조각에서 두 개념적 측면 속성에 매핑되는 열 [Part_Number] . "

보통이 경우 무엇을 해야할지 알고 있습니다. [Part_Number] 속성을 제거하십시오. 문제는 내가 ItemsB와 ItemsA 모두에서 [Part_Number]에 액세스해야하며 자주 webitems에 가지 않아야합니다. webitem이 항목을 웹 항목에 푸시했는지에 따라 특정 시점에 항상 [Part_Number]가 채워지지는 않습니다.

누구든지이 문제를 해결하는 방법을 알고 있습니까?

미리 감사드립니다.

답변

0

나는 이것을 ItemAItemB에서 WebItem까지 일대일 관계로 이해합니다. EF에서 일대일 관계는 항상 관계가 기본 키에 빌드되고 한 쪽만 필수 (기본)가되어야합니다. 종속 엔터티는 기본 키와 외래 키가 하나의 열에 있기 때문입니다. 종속 엔터티에 기본 키를 할당하고 나면 동일한 기본 키를 가진 주체 엔티티가 있어야합니다. 그렇지 않으면 외래 키로 정의 된 참조 무결성을 위반하게됩니다.

문제는 Part_Number가 기본 키와 외래 키인 동시에 발생한다는 것입니다. EFv4에서 이러한 매핑을 허용하려면 Foreign Key association instead of Independent association을 사용해야합니다. 여기에 brief description how to create foreign key association in the designer입니다. 참조 제한을 정의한 후에는 연관의 매핑 창으로 돌아가서 매핑을 삭제하십시오.

+0

Ladislav, ItemN 및 ItemB 테이블을 업데이트하여 Part_Number가 해당 테이블의 기본 키가 아님을 보여줍니다 (미안합니다). 따라서 ItemA/ItemB는 WebItem과 1에서 0.1 사이의 관계를가집니다. 이유는 그것이 만들어 질 때까지 ItemA가 WebItem에 존재하지 않을 것이고, 그 시점에 오직 하나의 일치하는 항목 만있을 것입니다. ItemB도 마찬가지입니다. 이게 말이 돼? 귀하의 의견을 검토하여 여전히 귀하의 의견이 적용되는지 확인하겠습니다. 귀하의 응답에 대한 감사합니다 –

+0

그것은 아마 이해가되지만 EF에서는 불가능합니다. 모든 일대일 관계는 FK의 고유성을 기반으로합니다. 즉, FK는 기본 키이거나 고유 키 여야합니다. 문제는 EF가 고유 키를 전혀 지원하지 않기 때문에 일대일 관계가 공유 기본 키의 위에 만 모델링 될 수 있기 때문입니다. –

+0

나는 이것이 대답 일 것이라고 생각한다. 이 경우 SP 경로를 따라 가야합니다. 시간 내 주셔서 감사합니다. –