2012-10-03 3 views
1
/

와트 기존 테이블 매핑, 나는이 기존 데이터베이스 :엔티티 프레임 워크의 세 가지 모델이 시나리오에는 참조 무결성

Address하는 'AddressId'을 갖고, 'ParentId', '도시', '주 '등등 갖는다

Person'PersonId ','이름 ', 등 갖는다

Company'회사 ID ','이름 '등

Address 행을 포함 할 수 있으므로 추가 모드 하나의 테이블보다 외래 키가 없습니다. Address 'ParentId'열에 'PersonId'또는 'CompanyId'가 포함됩니다.

가 생성하려면 내 DbContext, 내가 때문에 참조 무결성의 부족으로 엔티티 프레임 워크 전동 공구 베타 2를 사용, 그것은 PersonCompany에 대해 생성 된 클래스는 그들이해야 같은 주소의 컬렉션을 포함하지 않습니다.

이 "Addresses"속성에 추가 할 클래스를 변경하고 주소 테이블에 올바르게 매핑되도록하려면 어떻게해야합니까?

나는 지금 이와 같은 것을하고있다. 가능한 경우 문맥 매핑을 사용하는 것이 좋습니다.

고마워요!

+0

귀하의 주소 테이블을 판별 자 컬럼을 가지고 있는가 (나는 또한 외부 참조 테이블에 주소 유형 표시의 일종 싶어 그래서 나는, 우편, 운송 등이었다 주소의 종류를 알고 있었다)? 그것이 개인 또는 회사 주소인지 어떻게 결정합니까? –

+0

Nope; 그냥 행을 보면서 말할 방법이 없습니다 – John

+0

회사와 사람이 동일한 ID를 갖고 있다면 어떻게 될까요? 어떤 주소가 부모인지 어떻게 알 수 있습니까? –

답변

2

당신은, 당신은 주소 테이블에 고유 ID를 추가 한 다음 그것으로, 그것은이든 사람, 회사가 속해있는 기업, 공급 업체 등

만약에 그 ID를 저장해야 할 경우 다중 주소 시나리오 때문에 엔티티 (공급 업체, 사람, 회사 등)의 GUID와 주소의 GUID를 저장하는 새로운 테이블 AddressXRef 테이블을 만들 수 있습니다. 그래서 모든 엔티티는 여러 개의 주소를 가질 수 있으며 EF는 키가 모든 곳에있을 것이므로이 설정에 상당히 만족할 것입니다.

0

CompanyPerson에 대해 생성 한 부분 클래스를 생성합니다.

public partial class Company 
{ 
    public IEnumerable<Address> Addresses { ... } 
} 
관련 문제